@zerodev/sdk 5.2.1-alpha-7 → 5.2.1-alpha-9
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/_cjs/accounts/kernel/createKernelAccount.js +2 -2
- package/_cjs/clients/kernelAccountClient.js +17 -3
- package/_cjs/clients/kernelAccountClient.js.map +1 -1
- package/_cjs/clients/paymasterClient.js +18 -1
- package/_cjs/clients/paymasterClient.js.map +1 -1
- package/_cjs/clients/utils.js +31 -0
- package/_cjs/clients/utils.js.map +1 -0
- package/_cjs/constants.js +5 -2
- package/_cjs/constants.js.map +1 -1
- package/_cjs/providers/KernelEIP1193Provider.js +37 -0
- package/_cjs/providers/KernelEIP1193Provider.js.map +1 -1
- package/_esm/accounts/kernel/createKernelAccount.js +2 -2
- package/_esm/clients/kernelAccountClient.js +19 -5
- package/_esm/clients/kernelAccountClient.js.map +1 -1
- package/_esm/clients/paymasterClient.js +19 -2
- package/_esm/clients/paymasterClient.js.map +1 -1
- package/_esm/clients/utils.js +26 -0
- package/_esm/clients/utils.js.map +1 -0
- package/_esm/constants.js +4 -1
- package/_esm/constants.js.map +1 -1
- package/_esm/providers/KernelEIP1193Provider.js +37 -0
- package/_esm/providers/KernelEIP1193Provider.js.map +1 -1
- package/_types/clients/kernelAccountClient.d.ts.map +1 -1
- package/_types/clients/paymasterClient.d.ts.map +1 -1
- package/_types/clients/utils.d.ts +3 -0
- package/_types/clients/utils.d.ts.map +1 -0
- package/_types/constants.d.ts +4 -1
- package/_types/constants.d.ts.map +1 -1
- package/_types/providers/KernelEIP1193Provider.d.ts +2 -0
- package/_types/providers/KernelEIP1193Provider.d.ts.map +1 -1
- package/accounts/kernel/createKernelAccount.ts +2 -2
- package/clients/kernelAccountClient.ts +23 -5
- package/clients/paymasterClient.ts +24 -1
- package/clients/utils.ts +28 -0
- package/constants.ts +6 -2
- package/package.json +1 -1
- package/providers/KernelEIP1193Provider.ts +51 -0
|
@@ -49,9 +49,9 @@ const createAccountAbi = [
|
|
|
49
49
|
];
|
|
50
50
|
exports.KERNEL_ADDRESSES = {
|
|
51
51
|
ACCOUNT_LOGIC_V0_6: "0xd3082872F8B06073A021b4602e022d5A070d7cfC",
|
|
52
|
-
ACCOUNT_LOGIC_V0_7: "
|
|
52
|
+
ACCOUNT_LOGIC_V0_7: "0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27",
|
|
53
53
|
FACTORY_ADDRESS_V0_6: "0x5de4839a76cf55d0c90e2061ef4386d962E15ae3",
|
|
54
|
-
FACTORY_ADDRESS_V0_7: "
|
|
54
|
+
FACTORY_ADDRESS_V0_7: "0x6723b44Abeec4E71eBE3232BD5B455805baDD22f",
|
|
55
55
|
FACTORY_STAKER: "0xd703aaE79538628d27099B8c4f621bE4CCd142d5"
|
|
56
56
|
};
|
|
57
57
|
const getKernelInitData = async ({ entryPoint: entryPointAddress, kernelPluginManager }) => {
|
|
@@ -5,19 +5,33 @@ const permissionless_1 = require("permissionless");
|
|
|
5
5
|
const viem_1 = require("viem");
|
|
6
6
|
const getUserOperationGasPrice_js_1 = require("../actions/account-client/getUserOperationGasPrice.js");
|
|
7
7
|
const kernel_js_1 = require("./decorators/kernel.js");
|
|
8
|
+
const utils_js_1 = require("./utils.js");
|
|
8
9
|
const createKernelAccountClient = (parameters) => {
|
|
9
|
-
const { key = "Account", name = "Kernel Account Client", bundlerTransport } = parameters;
|
|
10
|
+
const { key = "Account", name = "Kernel Account Client", bundlerTransport, entryPoint } = parameters;
|
|
11
|
+
const entryPointVersion = (0, permissionless_1.getEntryPointVersion)(entryPoint);
|
|
12
|
+
const shouldIncludePimlicoProvider = bundlerTransport({}).config.key === "http" &&
|
|
13
|
+
entryPointVersion === "v0.7";
|
|
10
14
|
const client = (0, viem_1.createClient)({
|
|
11
15
|
...parameters,
|
|
12
16
|
key,
|
|
13
17
|
name,
|
|
14
|
-
transport: (opts) =>
|
|
18
|
+
transport: (opts) => {
|
|
19
|
+
let _bundlerTransport = bundlerTransport({
|
|
20
|
+
...opts,
|
|
21
|
+
retryCount: 0
|
|
22
|
+
});
|
|
23
|
+
if (!shouldIncludePimlicoProvider)
|
|
24
|
+
return _bundlerTransport;
|
|
25
|
+
_bundlerTransport = (0, viem_1.http)((0, utils_js_1.setPimlicoAsProvider)(_bundlerTransport.value?.url))({ ...opts, retryCount: 0 });
|
|
26
|
+
return _bundlerTransport;
|
|
27
|
+
},
|
|
15
28
|
type: "kernelAccountClient"
|
|
16
29
|
});
|
|
17
30
|
let middleware = parameters.middleware;
|
|
18
31
|
if ((!middleware ||
|
|
19
32
|
(typeof middleware !== "function" && !middleware.gasPrice)) &&
|
|
20
|
-
|
|
33
|
+
client.transport?.url &&
|
|
34
|
+
(0, utils_js_1.hasPimlicoAsProvider)(client.transport.url)) {
|
|
21
35
|
const gasPrice = () => (0, getUserOperationGasPrice_js_1.getUserOperationGasPrice)(client);
|
|
22
36
|
middleware = {
|
|
23
37
|
...middleware,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernelAccountClient.js","sourceRoot":"","sources":["../../clients/kernelAccountClient.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"kernelAccountClient.js","sourceRoot":"","sources":["../../clients/kernelAccountClient.ts"],"names":[],"mappings":";;;AAAA,mDAAqD;AAKrD,+BAOa;AAEb,uGAAgG;AAChG,sDAG+B;AAC/B,yCAAuE;AAsChE,MAAM,yBAAyB,GAAG,CAQrC,UAKC,EACiE,EAAE;IACpE,MAAM,EACF,GAAG,GAAG,SAAS,EACf,IAAI,GAAG,uBAAuB,EAC9B,gBAAgB,EAChB,UAAU,EACb,GAAG,UAAU,CAAA;IACd,MAAM,iBAAiB,GAAG,IAAA,qCAAoB,EAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,4BAA4B,GAC9B,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM;QAC1C,iBAAiB,KAAK,MAAM,CAAA;IAEhC,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC;QACxB,GAAG,UAAU;QACb,GAAG;QACH,IAAI;QACJ,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,iBAAiB,GAAG,gBAAgB,CAAC;gBACrC,GAAG,IAAI;gBACP,UAAU,EAAE,CAAC;aAChB,CAAC,CAAA;YACF,IAAI,CAAC,4BAA4B;gBAAE,OAAO,iBAAiB,CAAA;YAC3D,iBAAiB,GAAG,IAAA,WAAI,EACpB,IAAA,+BAAoB,EAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CACrD,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7B,OAAO,iBAAiB,CAAA;QAC5B,CAAC;QACD,IAAI,EAAE,qBAAqB;KAC9B,CAAC,CAAA;IAEF,IAAI,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;IACtC,IACI,CAAC,CAAC,UAAU;QACR,CAAC,OAAO,UAAU,KAAK,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,CAAC,SAAS,EAAE,GAAG;QACrB,IAAA,+BAAoB,EAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAC5C,CAAC;QACC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAA,sDAAwB,EAAC,MAAM,CAAC,CAAA;QACvD,UAAU,GAAG;YACT,GAAG,UAAU;YACb,QAAQ;SACX,CAAA;IACL,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAChB,IAAA,sCAA0B,EAAC;QACvB,UAAU;KACb,CAAC,CACiE,CAAA;AAC3E,CAAC,CAAA;AA9DY,QAAA,yBAAyB,6BA8DrC"}
|
|
@@ -1,12 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createZeroDevPaymasterClient = void 0;
|
|
4
|
+
const permissionless_1 = require("permissionless");
|
|
4
5
|
const viem_1 = require("viem");
|
|
5
6
|
const kernel_js_1 = require("./decorators/kernel.js");
|
|
7
|
+
const utils_js_1 = require("./utils.js");
|
|
6
8
|
const createZeroDevPaymasterClient = (parameters) => {
|
|
7
|
-
const { key = "public", name = "ZeroDev Paymaster Client" } = parameters;
|
|
9
|
+
const { key = "public", name = "ZeroDev Paymaster Client", entryPoint: entryPointAddress, transport } = parameters;
|
|
10
|
+
const entryPointVersion = (0, permissionless_1.getEntryPointVersion)(entryPointAddress);
|
|
11
|
+
const shouldIncludePimlicoProvider = transport({}).config.key === "http" && entryPointVersion === "v0.7";
|
|
8
12
|
const client = (0, viem_1.createClient)({
|
|
9
13
|
...parameters,
|
|
14
|
+
transport: (opts) => {
|
|
15
|
+
let _transport = transport({
|
|
16
|
+
...opts,
|
|
17
|
+
retryCount: 0
|
|
18
|
+
});
|
|
19
|
+
if (!shouldIncludePimlicoProvider)
|
|
20
|
+
return _transport;
|
|
21
|
+
_transport = (0, viem_1.http)((0, utils_js_1.setPimlicoAsProvider)(_transport.value?.url))({
|
|
22
|
+
...opts,
|
|
23
|
+
retryCount: 0
|
|
24
|
+
});
|
|
25
|
+
return _transport;
|
|
26
|
+
},
|
|
10
27
|
key,
|
|
11
28
|
name,
|
|
12
29
|
type: "zerodevPaymasterClient"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paymasterClient.js","sourceRoot":"","sources":["../../clients/paymasterClient.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"paymasterClient.js","sourceRoot":"","sources":["../../clients/paymasterClient.ts"],"names":[],"mappings":";;;AAAA,mDAAqD;AAErD,+BAQa;AAEb,sDAG+B;AAC/B,yCAAiD;AA0B1C,MAAM,4BAA4B,GAAG,CAKxC,UAEC,EACiC,EAAE;IACpC,MAAM,EACF,GAAG,GAAG,QAAQ,EACd,IAAI,GAAG,0BAA0B,EACjC,UAAU,EAAE,iBAAiB,EAC7B,SAAS,EACZ,GAAG,UAAU,CAAA;IACd,MAAM,iBAAiB,GAAG,IAAA,qCAAoB,EAAC,iBAAiB,CAAC,CAAA;IACjE,MAAM,4BAA4B,GAC9B,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,IAAI,iBAAiB,KAAK,MAAM,CAAA;IACvE,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC;QACxB,GAAG,UAAU;QACb,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,UAAU,GAAG,SAAS,CAAC;gBACvB,GAAG,IAAI;gBACP,UAAU,EAAE,CAAC;aAChB,CAAC,CAAA;YACF,IAAI,CAAC,4BAA4B;gBAAE,OAAO,UAAU,CAAA;YACpD,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,+BAAoB,EAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3D,GAAG,IAAI;gBACP,UAAU,EAAE,CAAC;aAChB,CAAC,CAAA;YACF,OAAO,UAAU,CAAA;QACrB,CAAC;QACD,GAAG;QACH,IAAI;QACJ,IAAI,EAAE,wBAAwB;KACjC,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAA,mCAAuB,EAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;AACxE,CAAC,CAAA;AArCY,QAAA,4BAA4B,gCAqCxC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasPimlicoAsProvider = exports.setPimlicoAsProvider = void 0;
|
|
4
|
+
const setPimlicoAsProvider = (urlString) => {
|
|
5
|
+
const url = new URL(urlString);
|
|
6
|
+
const params = url.searchParams;
|
|
7
|
+
if (params.has("bundlerProvider")) {
|
|
8
|
+
params.set("bundlerProvider", "PIMLICO");
|
|
9
|
+
}
|
|
10
|
+
else if (params.has("paymasterProvider")) {
|
|
11
|
+
params.set("paymasterProvider", "PIMLICO");
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
params.set("provider", "PIMLICO");
|
|
15
|
+
}
|
|
16
|
+
url.search = params.toString();
|
|
17
|
+
return url.toString();
|
|
18
|
+
};
|
|
19
|
+
exports.setPimlicoAsProvider = setPimlicoAsProvider;
|
|
20
|
+
const hasPimlicoAsProvider = (urlString) => {
|
|
21
|
+
const url = new URL(urlString);
|
|
22
|
+
const params = url.searchParams;
|
|
23
|
+
const provider = params.get("provider") ??
|
|
24
|
+
params.get("bundlerProvider") ??
|
|
25
|
+
params.get("paymasterProvider");
|
|
26
|
+
if (provider === "PIMLICO")
|
|
27
|
+
return true;
|
|
28
|
+
return false;
|
|
29
|
+
};
|
|
30
|
+
exports.hasPimlicoAsProvider = hasPimlicoAsProvider;
|
|
31
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../clients/utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAU,EAAE;IAC9D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;IAE9B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAA;IAE/B,IAAI,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAA;IAC5C,CAAC;SAAM,IAAI,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA;IAC9C,CAAC;SAAM,CAAC;QACJ,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IACrC,CAAC;IAED,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;IAE9B,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACzB,CAAC,CAAA;AAhBY,QAAA,oBAAoB,wBAgBhC;AAEM,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAW,EAAE;IAC/D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAA;IAC/B,MAAM,QAAQ,GACV,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IACnC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACvC,OAAO,KAAK,CAAA;AAChB,CAAC,CAAA;AATY,QAAA,oBAAoB,wBAShC"}
|
package/_cjs/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.safeCreateCallAddress = exports.EXEC_TYPE = exports.CALL_TYPE = exports.VALIDATOR_MODE = exports.VALIDATOR_TYPE = exports.LATEST_KERNEL_VERSION = exports.KERNEL_NAME = exports.TOKEN_ACTION = exports.KernelImplToVersionMap = exports.DUMMY_ECDSA_SIG = void 0;
|
|
3
|
+
exports.KernelFactoryToInitCodeHashMap = exports.safeCreateCallAddress = exports.EXEC_TYPE = exports.CALL_TYPE = exports.VALIDATOR_MODE = exports.VALIDATOR_TYPE = exports.LATEST_KERNEL_VERSION = exports.KERNEL_NAME = exports.TOKEN_ACTION = exports.KernelImplToVersionMap = exports.DUMMY_ECDSA_SIG = void 0;
|
|
4
4
|
exports.DUMMY_ECDSA_SIG = "0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c";
|
|
5
5
|
exports.KernelImplToVersionMap = {
|
|
6
6
|
"0x8dD4DBB54d8A8Cf0DE6F9CCC4609470A30EfF18C": "0.2.2",
|
|
@@ -8,7 +8,7 @@ exports.KernelImplToVersionMap = {
|
|
|
8
8
|
"0xD3F582F6B4814E989Ee8E96bc3175320B5A540ab": "0.2.3",
|
|
9
9
|
"0x5FC0236D6c88a65beD32EECDC5D60a5CAb377717": "0.2.3",
|
|
10
10
|
"0xd3082872F8B06073A021b4602e022d5A070d7cfC": "0.2.4",
|
|
11
|
-
"
|
|
11
|
+
"0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27": "0.3.0-beta"
|
|
12
12
|
};
|
|
13
13
|
exports.TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
|
|
14
14
|
exports.KERNEL_NAME = "Kernel";
|
|
@@ -38,4 +38,7 @@ var EXEC_TYPE;
|
|
|
38
38
|
EXEC_TYPE["TRY_EXEC"] = "0x01";
|
|
39
39
|
})(EXEC_TYPE || (exports.EXEC_TYPE = EXEC_TYPE = {}));
|
|
40
40
|
exports.safeCreateCallAddress = "0x9b35Af71d77eaf8d7e40252370304687390A1A52";
|
|
41
|
+
exports.KernelFactoryToInitCodeHashMap = {
|
|
42
|
+
"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3": "0xee9d8350bd899dd261db689aafd87eb8a30f085adbaff48152399438ff4eed73"
|
|
43
|
+
};
|
|
41
44
|
//# sourceMappingURL=constants.js.map
|
package/_cjs/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":";;;AAGa,QAAA,eAAe,GACxB,sIAAsI,CAAA;AAE7H,QAAA,sBAAsB,GAA+B;IAC9D,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,YAAY;CAC7D,CAAA;AACY,QAAA,YAAY,GAAG,4CAA4C,CAAA;AAC3D,QAAA,WAAW,GAAG,QAAQ,CAAA;AACtB,QAAA,qBAAqB,GAA2C;IACzE,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,YAAY;CACvB,CAAA;AACY,QAAA,cAAc,GAAG;IAC1B,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;CACZ,CAAA;AACV,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,kCAAgB,CAAA;IAChB,iCAAe,CAAA;AACnB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AACD,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,4BAAe,CAAA;IACf,2BAAc,CAAA;IACd,mCAAsB,CAAA;AAC1B,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AACD,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,6BAAgB,CAAA;IAChB,8BAAiB,CAAA;AACrB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAIY,QAAA,qBAAqB,GAC9B,4CAA4C,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":";;;AAGa,QAAA,eAAe,GACxB,sIAAsI,CAAA;AAE7H,QAAA,sBAAsB,GAA+B;IAC9D,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,YAAY;CAC7D,CAAA;AACY,QAAA,YAAY,GAAG,4CAA4C,CAAA;AAC3D,QAAA,WAAW,GAAG,QAAQ,CAAA;AACtB,QAAA,qBAAqB,GAA2C;IACzE,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,YAAY;CACvB,CAAA;AACY,QAAA,cAAc,GAAG;IAC1B,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;CACZ,CAAA;AACV,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,kCAAgB,CAAA;IAChB,iCAAe,CAAA;AACnB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AACD,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,4BAAe,CAAA;IACf,2BAAc,CAAA;IACd,mCAAsB,CAAA;AAC1B,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AACD,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,6BAAgB,CAAA;IAChB,8BAAiB,CAAA;AACrB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAIY,QAAA,qBAAqB,GAC9B,4CAA4C,CAAA;AACnC,QAAA,8BAA8B,GAA4B;IACnE,4CAA4C,EACxC,oEAAoE;CAC3E,CAAA"}
|
|
@@ -21,8 +21,13 @@ class KernelEIP1193Provider extends events_1.EventEmitter {
|
|
|
21
21
|
return this.handleEthAccounts();
|
|
22
22
|
case "eth_sendTransaction":
|
|
23
23
|
return this.handleEthSendTransaction(params);
|
|
24
|
+
case "eth_sign":
|
|
25
|
+
return this.handleEthSign(params);
|
|
24
26
|
case "personal_sign":
|
|
25
27
|
return this.handlePersonalSign(params);
|
|
28
|
+
case "eth_signTypedData":
|
|
29
|
+
case "eth_signTypedData_v4":
|
|
30
|
+
return this.handleEthSignTypedDataV4(params);
|
|
26
31
|
default:
|
|
27
32
|
return this.kernelClient.transport.request({ method, params });
|
|
28
33
|
}
|
|
@@ -43,6 +48,20 @@ class KernelEIP1193Provider extends events_1.EventEmitter {
|
|
|
43
48
|
const [tx] = params;
|
|
44
49
|
return this.kernelClient.sendTransaction(tx);
|
|
45
50
|
}
|
|
51
|
+
async handleEthSign(params) {
|
|
52
|
+
if (!this.kernelClient?.account) {
|
|
53
|
+
throw new Error("account not connected!");
|
|
54
|
+
}
|
|
55
|
+
const [address, message] = params;
|
|
56
|
+
if (address.toLowerCase() !==
|
|
57
|
+
this.kernelClient.account.address.toLowerCase()) {
|
|
58
|
+
throw new Error("cannot sign for address that is not the current account");
|
|
59
|
+
}
|
|
60
|
+
return this.kernelClient.signMessage({
|
|
61
|
+
message,
|
|
62
|
+
account: this.kernelClient.account
|
|
63
|
+
});
|
|
64
|
+
}
|
|
46
65
|
async handlePersonalSign(params) {
|
|
47
66
|
if (!this.kernelClient?.account) {
|
|
48
67
|
throw new Error("account not connected!");
|
|
@@ -57,6 +76,24 @@ class KernelEIP1193Provider extends events_1.EventEmitter {
|
|
|
57
76
|
account: this.kernelClient.account
|
|
58
77
|
});
|
|
59
78
|
}
|
|
79
|
+
async handleEthSignTypedDataV4(params) {
|
|
80
|
+
if (!this.kernelClient?.account) {
|
|
81
|
+
throw new Error("account not connected!");
|
|
82
|
+
}
|
|
83
|
+
const [address, typedDataJSON] = params;
|
|
84
|
+
const typedData = JSON.parse(typedDataJSON);
|
|
85
|
+
if (address.toLowerCase() !==
|
|
86
|
+
this.kernelClient.account.address.toLowerCase()) {
|
|
87
|
+
throw new Error("cannot sign for address that is not the current account");
|
|
88
|
+
}
|
|
89
|
+
return this.kernelClient.signTypedData({
|
|
90
|
+
account: this.kernelClient.account,
|
|
91
|
+
domain: typedData.domain,
|
|
92
|
+
types: typedData.types,
|
|
93
|
+
message: typedData.message,
|
|
94
|
+
primaryType: typedData.primaryType
|
|
95
|
+
});
|
|
96
|
+
}
|
|
60
97
|
}
|
|
61
98
|
exports.KernelEIP1193Provider = KernelEIP1193Provider;
|
|
62
99
|
//# sourceMappingURL=KernelEIP1193Provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KernelEIP1193Provider.js","sourceRoot":"","sources":["../../providers/KernelEIP1193Provider.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAUrC,MAAa,qBAEX,SAAQ,qBAAY;IAGlB,YAAY,YAA6C;QACrD,KAAK,EAAE,CAAA;QAHH;;;;;WAA6C;QAIjD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EACV,MAAM,EACN,MAAM,GAAG,EAAE,EACK;QAChB,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,qBAAqB;gBACtB,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAA;YAC1C,KAAK,cAAc;gBACf,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAA;YACnC,KAAK,qBAAqB;gBACtB,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAA;YAChD,KAAK,eAAe;gBAChB,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAA0B,CAAC,CAAA;YAC9D;gBACI,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;QACtE,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,wBAAwB;QAClC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAA;QACb,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAA;QACb,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,MAAe;QAClD,MAAM,CAAC,EAAE,CAAC,GAAG,MAAqC,CAAA;QAClD,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC5B,MAAwB;QAExB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC7C,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,CAAA;QACjC,IACI,OAAO,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EACjD,CAAC;YACC,MAAM,IAAI,KAAK,CACX,yDAAyD,CAC5D,CAAA;QACL,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YACjC,OAAO;YACP,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO;SACrC,CAAC,CAAA;IACN,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"KernelEIP1193Provider.js","sourceRoot":"","sources":["../../providers/KernelEIP1193Provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,9 +52,9 @@ const createAccountAbi = [
|
|
|
52
52
|
*/
|
|
53
53
|
export const KERNEL_ADDRESSES = {
|
|
54
54
|
ACCOUNT_LOGIC_V0_6: "0xd3082872F8B06073A021b4602e022d5A070d7cfC",
|
|
55
|
-
ACCOUNT_LOGIC_V0_7: "
|
|
55
|
+
ACCOUNT_LOGIC_V0_7: "0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27",
|
|
56
56
|
FACTORY_ADDRESS_V0_6: "0x5de4839a76cf55d0c90e2061ef4386d962E15ae3",
|
|
57
|
-
FACTORY_ADDRESS_V0_7: "
|
|
57
|
+
FACTORY_ADDRESS_V0_7: "0x6723b44Abeec4E71eBE3232BD5B455805baDD22f",
|
|
58
58
|
FACTORY_STAKER: "0xd703aaE79538628d27099B8c4f621bE4CCd142d5"
|
|
59
59
|
};
|
|
60
60
|
const getKernelInitData = async ({ entryPoint: entryPointAddress, kernelPluginManager }) => {
|
|
@@ -1,21 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createClient } from "viem";
|
|
1
|
+
import { getEntryPointVersion } from "permissionless";
|
|
2
|
+
import { http, createClient } from "viem";
|
|
3
3
|
import {} from "../accounts/index.js";
|
|
4
4
|
import { getUserOperationGasPrice } from "../actions/account-client/getUserOperationGasPrice.js";
|
|
5
5
|
import { kernelAccountClientActions } from "./decorators/kernel.js";
|
|
6
|
+
import { hasPimlicoAsProvider, setPimlicoAsProvider } from "./utils.js";
|
|
6
7
|
export const createKernelAccountClient = (parameters) => {
|
|
7
|
-
const { key = "Account", name = "Kernel Account Client", bundlerTransport } = parameters;
|
|
8
|
+
const { key = "Account", name = "Kernel Account Client", bundlerTransport, entryPoint } = parameters;
|
|
9
|
+
const entryPointVersion = getEntryPointVersion(entryPoint);
|
|
10
|
+
const shouldIncludePimlicoProvider = bundlerTransport({}).config.key === "http" &&
|
|
11
|
+
entryPointVersion === "v0.7";
|
|
8
12
|
const client = createClient({
|
|
9
13
|
...parameters,
|
|
10
14
|
key,
|
|
11
15
|
name,
|
|
12
|
-
transport: (opts) =>
|
|
16
|
+
transport: (opts) => {
|
|
17
|
+
let _bundlerTransport = bundlerTransport({
|
|
18
|
+
...opts,
|
|
19
|
+
retryCount: 0
|
|
20
|
+
});
|
|
21
|
+
if (!shouldIncludePimlicoProvider)
|
|
22
|
+
return _bundlerTransport;
|
|
23
|
+
_bundlerTransport = http(setPimlicoAsProvider(_bundlerTransport.value?.url))({ ...opts, retryCount: 0 });
|
|
24
|
+
return _bundlerTransport;
|
|
25
|
+
},
|
|
13
26
|
type: "kernelAccountClient"
|
|
14
27
|
});
|
|
15
28
|
let middleware = parameters.middleware;
|
|
16
29
|
if ((!middleware ||
|
|
17
30
|
(typeof middleware !== "function" && !middleware.gasPrice)) &&
|
|
18
|
-
|
|
31
|
+
client.transport?.url &&
|
|
32
|
+
hasPimlicoAsProvider(client.transport.url)) {
|
|
19
33
|
const gasPrice = () => getUserOperationGasPrice(client);
|
|
20
34
|
middleware = {
|
|
21
35
|
...middleware,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernelAccountClient.js","sourceRoot":"","sources":["../../clients/kernelAccountClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"kernelAccountClient.js","sourceRoot":"","sources":["../../clients/kernelAccountClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAKrD,OAAO,EACH,IAAI,EAKJ,YAAY,EACf,MAAM,MAAM,CAAA;AACb,OAAO,EAA2B,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAA;AAChG,OAAO,EAEH,0BAA0B,EAC7B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAsCvE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAQrC,UAKC,EACiE,EAAE;IACpE,MAAM,EACF,GAAG,GAAG,SAAS,EACf,IAAI,GAAG,uBAAuB,EAC9B,gBAAgB,EAChB,UAAU,EACb,GAAG,UAAU,CAAA;IACd,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,4BAA4B,GAC9B,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM;QAC1C,iBAAiB,KAAK,MAAM,CAAA;IAEhC,MAAM,MAAM,GAAG,YAAY,CAAC;QACxB,GAAG,UAAU;QACb,GAAG;QACH,IAAI;QACJ,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,iBAAiB,GAAG,gBAAgB,CAAC;gBACrC,GAAG,IAAI;gBACP,UAAU,EAAE,CAAC;aAChB,CAAC,CAAA;YACF,IAAI,CAAC,4BAA4B;gBAAE,OAAO,iBAAiB,CAAA;YAC3D,iBAAiB,GAAG,IAAI,CACpB,oBAAoB,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CACrD,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7B,OAAO,iBAAiB,CAAA;QAC5B,CAAC;QACD,IAAI,EAAE,qBAAqB;KAC9B,CAAC,CAAA;IAEF,IAAI,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;IACtC,IACI,CAAC,CAAC,UAAU;QACR,CAAC,OAAO,UAAU,KAAK,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,CAAC,SAAS,EAAE,GAAG;QACrB,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAC5C,CAAC;QACC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAA;QACvD,UAAU,GAAG;YACT,GAAG,UAAU;YACb,QAAQ;SACX,CAAA;IACL,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAChB,0BAA0B,CAAC;QACvB,UAAU;KACb,CAAC,CACiE,CAAA;AAC3E,CAAC,CAAA"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getEntryPointVersion } from "permissionless";
|
|
2
|
+
import { http, createClient } from "viem";
|
|
2
3
|
import { zerodevPaymasterActions } from "./decorators/kernel.js";
|
|
4
|
+
import { setPimlicoAsProvider } from "./utils.js";
|
|
3
5
|
/**
|
|
4
6
|
* Creates a ZeroDev-specific Paymaster Client with a given [Transport](https://viem.sh/docs/clients/intro.html) configured for a [Chain](https://viem.sh/docs/clients/chains.html).
|
|
5
7
|
*
|
|
@@ -18,9 +20,24 @@ import { zerodevPaymasterActions } from "./decorators/kernel.js";
|
|
|
18
20
|
* })
|
|
19
21
|
*/
|
|
20
22
|
export const createZeroDevPaymasterClient = (parameters) => {
|
|
21
|
-
const { key = "public", name = "ZeroDev Paymaster Client" } = parameters;
|
|
23
|
+
const { key = "public", name = "ZeroDev Paymaster Client", entryPoint: entryPointAddress, transport } = parameters;
|
|
24
|
+
const entryPointVersion = getEntryPointVersion(entryPointAddress);
|
|
25
|
+
const shouldIncludePimlicoProvider = transport({}).config.key === "http" && entryPointVersion === "v0.7";
|
|
22
26
|
const client = createClient({
|
|
23
27
|
...parameters,
|
|
28
|
+
transport: (opts) => {
|
|
29
|
+
let _transport = transport({
|
|
30
|
+
...opts,
|
|
31
|
+
retryCount: 0
|
|
32
|
+
});
|
|
33
|
+
if (!shouldIncludePimlicoProvider)
|
|
34
|
+
return _transport;
|
|
35
|
+
_transport = http(setPimlicoAsProvider(_transport.value?.url))({
|
|
36
|
+
...opts,
|
|
37
|
+
retryCount: 0
|
|
38
|
+
});
|
|
39
|
+
return _transport;
|
|
40
|
+
},
|
|
24
41
|
key,
|
|
25
42
|
name,
|
|
26
43
|
type: "zerodevPaymasterClient"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paymasterClient.js","sourceRoot":"","sources":["../../clients/paymasterClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paymasterClient.js","sourceRoot":"","sources":["../../clients/paymasterClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAErD,OAAO,EACH,IAAI,EAMJ,YAAY,EACf,MAAM,MAAM,CAAA;AAEb,OAAO,EAEH,uBAAuB,EAC1B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AASjD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAKxC,UAEC,EACiC,EAAE;IACpC,MAAM,EACF,GAAG,GAAG,QAAQ,EACd,IAAI,GAAG,0BAA0B,EACjC,UAAU,EAAE,iBAAiB,EAC7B,SAAS,EACZ,GAAG,UAAU,CAAA;IACd,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;IACjE,MAAM,4BAA4B,GAC9B,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,IAAI,iBAAiB,KAAK,MAAM,CAAA;IACvE,MAAM,MAAM,GAAG,YAAY,CAAC;QACxB,GAAG,UAAU;QACb,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,UAAU,GAAG,SAAS,CAAC;gBACvB,GAAG,IAAI;gBACP,UAAU,EAAE,CAAC;aAChB,CAAC,CAAA;YACF,IAAI,CAAC,4BAA4B;gBAAE,OAAO,UAAU,CAAA;YACpD,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3D,GAAG,IAAI;gBACP,UAAU,EAAE,CAAC;aAChB,CAAC,CAAA;YACF,OAAO,UAAU,CAAA;QACrB,CAAC;QACD,GAAG;QACH,IAAI;QACJ,IAAI,EAAE,wBAAwB;KACjC,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;AACxE,CAAC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export const setPimlicoAsProvider = (urlString) => {
|
|
2
|
+
const url = new URL(urlString);
|
|
3
|
+
const params = url.searchParams;
|
|
4
|
+
if (params.has("bundlerProvider")) {
|
|
5
|
+
params.set("bundlerProvider", "PIMLICO");
|
|
6
|
+
}
|
|
7
|
+
else if (params.has("paymasterProvider")) {
|
|
8
|
+
params.set("paymasterProvider", "PIMLICO");
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
params.set("provider", "PIMLICO");
|
|
12
|
+
}
|
|
13
|
+
url.search = params.toString();
|
|
14
|
+
return url.toString();
|
|
15
|
+
};
|
|
16
|
+
export const hasPimlicoAsProvider = (urlString) => {
|
|
17
|
+
const url = new URL(urlString);
|
|
18
|
+
const params = url.searchParams;
|
|
19
|
+
const provider = params.get("provider") ??
|
|
20
|
+
params.get("bundlerProvider") ??
|
|
21
|
+
params.get("paymasterProvider");
|
|
22
|
+
if (provider === "PIMLICO")
|
|
23
|
+
return true;
|
|
24
|
+
return false;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../clients/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAU,EAAE;IAC9D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;IAE9B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAA;IAE/B,IAAI,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAA;IAC5C,CAAC;SAAM,IAAI,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA;IAC9C,CAAC;SAAM,CAAC;QACJ,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IACrC,CAAC;IAED,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;IAE9B,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAW,EAAE;IAC/D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAA;IAC/B,MAAM,QAAQ,GACV,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IACnC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACvC,OAAO,KAAK,CAAA;AAChB,CAAC,CAAA"}
|
package/_esm/constants.js
CHANGED
|
@@ -6,7 +6,7 @@ export const KernelImplToVersionMap = {
|
|
|
6
6
|
"0xD3F582F6B4814E989Ee8E96bc3175320B5A540ab": "0.2.3",
|
|
7
7
|
"0x5FC0236D6c88a65beD32EECDC5D60a5CAb377717": "0.2.3",
|
|
8
8
|
"0xd3082872F8B06073A021b4602e022d5A070d7cfC": "0.2.4",
|
|
9
|
-
"
|
|
9
|
+
"0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27": "0.3.0-beta"
|
|
10
10
|
};
|
|
11
11
|
export const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
|
|
12
12
|
export const KERNEL_NAME = "Kernel";
|
|
@@ -38,4 +38,7 @@ export var EXEC_TYPE;
|
|
|
38
38
|
// Safe's library for create and create2: https://github.com/safe-global/safe-contracts/blob/0acdd35a203299585438f53885df630f9d486a86/contracts/libraries/CreateCall.sol
|
|
39
39
|
// Address was found here: https://github.com/safe-global/safe-deployments/blob/926ec6bbe2ebcac3aa2c2c6c0aff74aa590cbc6a/src/assets/v1.4.1/create_call.json
|
|
40
40
|
export const safeCreateCallAddress = "0x9b35Af71d77eaf8d7e40252370304687390A1A52";
|
|
41
|
+
export const KernelFactoryToInitCodeHashMap = {
|
|
42
|
+
"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3": "0xee9d8350bd899dd261db689aafd87eb8a30f085adbaff48152399438ff4eed73"
|
|
43
|
+
};
|
|
41
44
|
//# sourceMappingURL=constants.js.map
|
package/_esm/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,MAAM,MAAM,CAAA;AAE7C,MAAM,CAAC,MAAM,eAAe,GACxB,sIAAsI,CAAA;AAE1I,MAAM,CAAC,MAAM,sBAAsB,GAA+B;IAC9D,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,YAAY;CAC7D,CAAA;AACD,MAAM,CAAC,MAAM,YAAY,GAAG,4CAA4C,CAAA;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAA;AACnC,MAAM,CAAC,MAAM,qBAAqB,GAA2C;IACzE,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,YAAY;CACvB,CAAA;AACD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;CACZ,CAAA;AACV,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,kCAAgB,CAAA;IAChB,iCAAe,CAAA;AACnB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AACD,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,4BAAe,CAAA;IACf,2BAAc,CAAA;IACd,mCAAsB,CAAA;AAC1B,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AACD,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,6BAAgB,CAAA;IAChB,8BAAiB,CAAA;AACrB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,wKAAwK;AACxK,2JAA2J;AAC3J,MAAM,CAAC,MAAM,qBAAqB,GAC9B,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,8BAA8B,GAA4B;IACnE,4CAA4C,EACxC,oEAAoE;CAC3E,CAAA"}
|
|
@@ -20,8 +20,13 @@ export class KernelEIP1193Provider extends EventEmitter {
|
|
|
20
20
|
return this.handleEthAccounts();
|
|
21
21
|
case "eth_sendTransaction":
|
|
22
22
|
return this.handleEthSendTransaction(params);
|
|
23
|
+
case "eth_sign":
|
|
24
|
+
return this.handleEthSign(params);
|
|
23
25
|
case "personal_sign":
|
|
24
26
|
return this.handlePersonalSign(params);
|
|
27
|
+
case "eth_signTypedData":
|
|
28
|
+
case "eth_signTypedData_v4":
|
|
29
|
+
return this.handleEthSignTypedDataV4(params);
|
|
25
30
|
default:
|
|
26
31
|
return this.kernelClient.transport.request({ method, params });
|
|
27
32
|
}
|
|
@@ -42,6 +47,20 @@ export class KernelEIP1193Provider extends EventEmitter {
|
|
|
42
47
|
const [tx] = params;
|
|
43
48
|
return this.kernelClient.sendTransaction(tx);
|
|
44
49
|
}
|
|
50
|
+
async handleEthSign(params) {
|
|
51
|
+
if (!this.kernelClient?.account) {
|
|
52
|
+
throw new Error("account not connected!");
|
|
53
|
+
}
|
|
54
|
+
const [address, message] = params;
|
|
55
|
+
if (address.toLowerCase() !==
|
|
56
|
+
this.kernelClient.account.address.toLowerCase()) {
|
|
57
|
+
throw new Error("cannot sign for address that is not the current account");
|
|
58
|
+
}
|
|
59
|
+
return this.kernelClient.signMessage({
|
|
60
|
+
message,
|
|
61
|
+
account: this.kernelClient.account
|
|
62
|
+
});
|
|
63
|
+
}
|
|
45
64
|
async handlePersonalSign(params) {
|
|
46
65
|
if (!this.kernelClient?.account) {
|
|
47
66
|
throw new Error("account not connected!");
|
|
@@ -56,5 +75,23 @@ export class KernelEIP1193Provider extends EventEmitter {
|
|
|
56
75
|
account: this.kernelClient.account
|
|
57
76
|
});
|
|
58
77
|
}
|
|
78
|
+
async handleEthSignTypedDataV4(params) {
|
|
79
|
+
if (!this.kernelClient?.account) {
|
|
80
|
+
throw new Error("account not connected!");
|
|
81
|
+
}
|
|
82
|
+
const [address, typedDataJSON] = params;
|
|
83
|
+
const typedData = JSON.parse(typedDataJSON);
|
|
84
|
+
if (address.toLowerCase() !==
|
|
85
|
+
this.kernelClient.account.address.toLowerCase()) {
|
|
86
|
+
throw new Error("cannot sign for address that is not the current account");
|
|
87
|
+
}
|
|
88
|
+
return this.kernelClient.signTypedData({
|
|
89
|
+
account: this.kernelClient.account,
|
|
90
|
+
domain: typedData.domain,
|
|
91
|
+
types: typedData.types,
|
|
92
|
+
message: typedData.message,
|
|
93
|
+
primaryType: typedData.primaryType
|
|
94
|
+
});
|
|
95
|
+
}
|
|
59
96
|
}
|
|
60
97
|
//# sourceMappingURL=KernelEIP1193Provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KernelEIP1193Provider.js","sourceRoot":"","sources":["../../providers/KernelEIP1193Provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAA4B,MAAM,cAAc,CAAA;AAEvD,OAAO,EAKN,MAAM,MAAM,CAAA;AAEb,MAAM,OAAO,qBAEX,SAAQ,YAAY;IAGlB,YAAY,YAA6C;QACrD,KAAK,EAAE,CAAA;QAHH;;;;;WAA6C;QAIjD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EACV,MAAM,EACN,MAAM,GAAG,EAAE,EACK;QAChB,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,qBAAqB;gBACtB,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAA;YAC1C,KAAK,cAAc;gBACf,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAA;YACnC,KAAK,qBAAqB;gBACtB,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAA;YAChD,KAAK,eAAe;gBAChB,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAA0B,CAAC,CAAA;YAC9D;gBACI,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;QACtE,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,wBAAwB;QAClC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAA;QACb,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAA;QACb,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,MAAe;QAClD,MAAM,CAAC,EAAE,CAAC,GAAG,MAAqC,CAAA;QAClD,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC5B,MAAwB;QAExB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC7C,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,CAAA;QACjC,IACI,OAAO,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EACjD,CAAC;YACC,MAAM,IAAI,KAAK,CACX,yDAAyD,CAC5D,CAAA;QACL,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YACjC,OAAO;YACP,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO;SACrC,CAAC,CAAA;IACN,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"KernelEIP1193Provider.js","sourceRoot":"","sources":["../../providers/KernelEIP1193Provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernelAccountClient.d.ts","sourceRoot":"","sources":["../../clients/kernelAccountClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"kernelAccountClient.d.ts","sourceRoot":"","sources":["../../clients/kernelAccountClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAEH,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,SAAS,EAEjB,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EACH,KAAK,0BAA0B,EAElC,MAAM,wBAAwB,CAAA;AAG/B,MAAM,MAAM,mBAAmB,CAC3B,UAAU,SAAS,UAAU,EAC7B,SAAS,SAAS,SAAS,GAAG,SAAS,EACvC,KAAK,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACnD,OAAO,SAAS,kBAAkB,CAAC,UAAU,CAAC,GAAG,SAAS,GACpD,kBAAkB,CAAC,UAAU,CAAC,GAC9B,SAAS,IACf,QAAQ,CACR,MAAM,CACF,SAAS,EACT,KAAK,EACL,OAAO,EACP,gBAAgB,CAAC,UAAU,CAAC,EAC5B,0BAA0B,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CACzD,CACJ,CAAA;AAED,MAAM,MAAM,wBAAwB,CAChC,UAAU,SAAS,UAAU,EAC7B,SAAS,SAAS,SAAS,GAAG,SAAS,EACvC,KAAK,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACnD,OAAO,SAAS,YAAY,CAAC,UAAU,CAAC,GAAG,SAAS,GAC9C,YAAY,CAAC,UAAU,CAAC,GACxB,SAAS,IACf,QAAQ,CACR,IAAI,CACA,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EACvC,WAAW,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,iBAAiB,CAC7D,GAAG;IACA,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,SAAS,CAAA;CAC9B,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG;IACrB,UAAU,EAAE,UAAU,CAAA;CACzB,CACR,CAAA;AAED,eAAO,MAAM,yBAAyB;;;;;;;sBANZ,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoElC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paymasterClient.d.ts","sourceRoot":"","sources":["../../clients/paymasterClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paymasterClient.d.ts","sourceRoot":"","sources":["../../clients/paymasterClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAEH,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,KAAK,SAAS,EAEjB,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EACH,KAAK,6BAA6B,EAErC,MAAM,wBAAwB,CAAA;AAG/B,MAAM,MAAM,sBAAsB,CAAC,UAAU,SAAS,UAAU,IAAI,MAAM,CACtE,SAAS,EACT,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,SAAS,EACnB,yBAAyB,CAAC,UAAU,CAAC,EACrC,6BAA6B,CAAC,UAAU,CAAC,CAC5C,CAAA;AACD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;wCAqCxC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../clients/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,cAAe,MAAM,KAAG,MAgBxD,CAAA;AAED,eAAO,MAAM,oBAAoB,cAAe,MAAM,KAAG,OASxD,CAAA"}
|
package/_types/constants.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EntryPointVersion } from "permissionless/types/entrypoint";
|
|
2
|
-
import { type Address } from "viem";
|
|
2
|
+
import { type Address, type Hex } from "viem";
|
|
3
3
|
export declare const DUMMY_ECDSA_SIG = "0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c";
|
|
4
4
|
export declare const KernelImplToVersionMap: {
|
|
5
5
|
[key: Address]: string;
|
|
@@ -28,4 +28,7 @@ export declare enum EXEC_TYPE {
|
|
|
28
28
|
TRY_EXEC = "0x01"
|
|
29
29
|
}
|
|
30
30
|
export declare const safeCreateCallAddress = "0x9b35Af71d77eaf8d7e40252370304687390A1A52";
|
|
31
|
+
export declare const KernelFactoryToInitCodeHashMap: {
|
|
32
|
+
[key: Address]: Hex;
|
|
33
|
+
};
|
|
31
34
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAA;AAE7C,eAAO,MAAM,eAAe,yIAC8G,CAAA;AAE1I,eAAO,MAAM,sBAAsB,EAAE;IAAE,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAA;CAO5D,CAAA;AACD,eAAO,MAAM,YAAY,+CAA+C,CAAA;AACxE,eAAO,MAAM,WAAW,WAAW,CAAA;AACnC,eAAO,MAAM,qBAAqB,EAAE;KAAG,GAAG,IAAI,iBAAiB,GAAG,MAAM;CAGvE,CAAA;AACD,eAAO,MAAM,cAAc;;;;CAIjB,CAAA;AACV,oBAAY,cAAc;IACtB,OAAO,SAAS;IAChB,MAAM,SAAS;CAClB;AACD,oBAAY,SAAS;IACjB,MAAM,SAAS;IACf,KAAK,SAAS;IACd,aAAa,SAAS;CACzB;AACD,oBAAY,SAAS;IACjB,OAAO,SAAS;IAChB,QAAQ,SAAS;CACpB;AAID,eAAO,MAAM,qBAAqB,+CACc,CAAA;AAChD,eAAO,MAAM,8BAA8B,EAAE;IAAE,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAAA;CAGjE,CAAA"}
|
|
@@ -10,6 +10,8 @@ export declare class KernelEIP1193Provider<entryPoint extends EntryPoint> extend
|
|
|
10
10
|
private handleEthRequestAccounts;
|
|
11
11
|
private handleEthAccounts;
|
|
12
12
|
private handleEthSendTransaction;
|
|
13
|
+
private handleEthSign;
|
|
13
14
|
private handlePersonalSign;
|
|
15
|
+
private handleEthSignTypedDataV4;
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=KernelEIP1193Provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KernelEIP1193Provider.d.ts","sourceRoot":"","sources":["../../providers/KernelEIP1193Provider.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAGxB,MAAM,MAAM,CAAA;AAEb,qBAAa,qBAAqB,CAC9B,UAAU,SAAS,UAAU,CAC/B,SAAQ,YAAY;IAClB,OAAO,CAAC,YAAY,CAAiC;gBAEzC,YAAY,EAAE,mBAAmB,CAAC,UAAU,CAAC;IAKnD,OAAO,CAAC,EACV,MAAM,EACN,MAAW,EACd,EAAE,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"KernelEIP1193Provider.d.ts","sourceRoot":"","sources":["../../providers/KernelEIP1193Provider.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAGxB,MAAM,MAAM,CAAA;AAEb,qBAAa,qBAAqB,CAC9B,UAAU,SAAS,UAAU,CAC/B,SAAQ,YAAY;IAClB,OAAO,CAAC,YAAY,CAAiC;gBAEzC,YAAY,EAAE,mBAAmB,CAAC,UAAU,CAAC;IAKnD,OAAO,CAAC,EACV,MAAM,EACN,MAAW,EACd,EAAE,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,CAAC;YAoBrC,wBAAwB;YAOxB,iBAAiB;YAOjB,wBAAwB;YAKxB,aAAa;YAoBb,kBAAkB;YAsBlB,wBAAwB;CAyBzC"}
|
|
@@ -120,9 +120,9 @@ export const KERNEL_ADDRESSES: {
|
|
|
120
120
|
FACTORY_STAKER: Address
|
|
121
121
|
} = {
|
|
122
122
|
ACCOUNT_LOGIC_V0_6: "0xd3082872F8B06073A021b4602e022d5A070d7cfC",
|
|
123
|
-
ACCOUNT_LOGIC_V0_7: "
|
|
123
|
+
ACCOUNT_LOGIC_V0_7: "0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27",
|
|
124
124
|
FACTORY_ADDRESS_V0_6: "0x5de4839a76cf55d0c90e2061ef4386d962E15ae3",
|
|
125
|
-
FACTORY_ADDRESS_V0_7: "
|
|
125
|
+
FACTORY_ADDRESS_V0_7: "0x6723b44Abeec4E71eBE3232BD5B455805baDD22f",
|
|
126
126
|
FACTORY_STAKER: "0xd703aaE79538628d27099B8c4f621bE4CCd142d5"
|
|
127
127
|
}
|
|
128
128
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getEntryPointVersion } from "permissionless"
|
|
2
2
|
import type { SmartAccount } from "permissionless/accounts/types"
|
|
3
3
|
import type { Middleware } from "permissionless/actions/smartAccount"
|
|
4
4
|
import type { EntryPoint, Prettify } from "permissionless/types"
|
|
5
5
|
import type { BundlerRpcSchema } from "permissionless/types/bundler"
|
|
6
6
|
import {
|
|
7
|
+
http,
|
|
7
8
|
type Chain,
|
|
8
9
|
type Client,
|
|
9
10
|
type ClientConfig,
|
|
@@ -16,6 +17,7 @@ import {
|
|
|
16
17
|
type KernelAccountClientActions,
|
|
17
18
|
kernelAccountClientActions
|
|
18
19
|
} from "./decorators/kernel.js"
|
|
20
|
+
import { hasPimlicoAsProvider, setPimlicoAsProvider } from "./utils.js"
|
|
19
21
|
|
|
20
22
|
export type KernelAccountClient<
|
|
21
23
|
entryPoint extends EntryPoint,
|
|
@@ -71,22 +73,38 @@ export const createKernelAccountClient = <
|
|
|
71
73
|
const {
|
|
72
74
|
key = "Account",
|
|
73
75
|
name = "Kernel Account Client",
|
|
74
|
-
bundlerTransport
|
|
76
|
+
bundlerTransport,
|
|
77
|
+
entryPoint
|
|
75
78
|
} = parameters
|
|
79
|
+
const entryPointVersion = getEntryPointVersion(entryPoint)
|
|
80
|
+
const shouldIncludePimlicoProvider =
|
|
81
|
+
bundlerTransport({}).config.key === "http" &&
|
|
82
|
+
entryPointVersion === "v0.7"
|
|
83
|
+
|
|
76
84
|
const client = createClient({
|
|
77
85
|
...parameters,
|
|
78
86
|
key,
|
|
79
87
|
name,
|
|
80
|
-
transport: (opts) =>
|
|
88
|
+
transport: (opts) => {
|
|
89
|
+
let _bundlerTransport = bundlerTransport({
|
|
90
|
+
...opts,
|
|
91
|
+
retryCount: 0
|
|
92
|
+
})
|
|
93
|
+
if (!shouldIncludePimlicoProvider) return _bundlerTransport
|
|
94
|
+
_bundlerTransport = http(
|
|
95
|
+
setPimlicoAsProvider(_bundlerTransport.value?.url)
|
|
96
|
+
)({ ...opts, retryCount: 0 })
|
|
97
|
+
return _bundlerTransport
|
|
98
|
+
},
|
|
81
99
|
type: "kernelAccountClient"
|
|
82
100
|
})
|
|
83
101
|
|
|
84
102
|
let middleware = parameters.middleware
|
|
85
|
-
|
|
86
103
|
if (
|
|
87
104
|
(!middleware ||
|
|
88
105
|
(typeof middleware !== "function" && !middleware.gasPrice)) &&
|
|
89
|
-
|
|
106
|
+
client.transport?.url &&
|
|
107
|
+
hasPimlicoAsProvider(client.transport.url)
|
|
90
108
|
) {
|
|
91
109
|
const gasPrice = () => getUserOperationGasPrice(client)
|
|
92
110
|
middleware = {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { getEntryPointVersion } from "permissionless"
|
|
1
2
|
import type { EntryPoint } from "permissionless/types/entrypoint"
|
|
2
3
|
import {
|
|
4
|
+
http,
|
|
3
5
|
type Account,
|
|
4
6
|
type Chain,
|
|
5
7
|
type Client,
|
|
@@ -12,6 +14,7 @@ import {
|
|
|
12
14
|
type ZeroDevPaymasterClientActions,
|
|
13
15
|
zerodevPaymasterActions
|
|
14
16
|
} from "./decorators/kernel.js"
|
|
17
|
+
import { setPimlicoAsProvider } from "./utils.js"
|
|
15
18
|
|
|
16
19
|
export type ZeroDevPaymasterClient<entryPoint extends EntryPoint> = Client<
|
|
17
20
|
Transport,
|
|
@@ -46,9 +49,29 @@ export const createZeroDevPaymasterClient = <
|
|
|
46
49
|
entryPoint: entryPoint
|
|
47
50
|
}
|
|
48
51
|
): ZeroDevPaymasterClient<entryPoint> => {
|
|
49
|
-
const {
|
|
52
|
+
const {
|
|
53
|
+
key = "public",
|
|
54
|
+
name = "ZeroDev Paymaster Client",
|
|
55
|
+
entryPoint: entryPointAddress,
|
|
56
|
+
transport
|
|
57
|
+
} = parameters
|
|
58
|
+
const entryPointVersion = getEntryPointVersion(entryPointAddress)
|
|
59
|
+
const shouldIncludePimlicoProvider =
|
|
60
|
+
transport({}).config.key === "http" && entryPointVersion === "v0.7"
|
|
50
61
|
const client = createClient({
|
|
51
62
|
...parameters,
|
|
63
|
+
transport: (opts) => {
|
|
64
|
+
let _transport = transport({
|
|
65
|
+
...opts,
|
|
66
|
+
retryCount: 0
|
|
67
|
+
})
|
|
68
|
+
if (!shouldIncludePimlicoProvider) return _transport
|
|
69
|
+
_transport = http(setPimlicoAsProvider(_transport.value?.url))({
|
|
70
|
+
...opts,
|
|
71
|
+
retryCount: 0
|
|
72
|
+
})
|
|
73
|
+
return _transport
|
|
74
|
+
},
|
|
52
75
|
key,
|
|
53
76
|
name,
|
|
54
77
|
type: "zerodevPaymasterClient"
|
package/clients/utils.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const setPimlicoAsProvider = (urlString: string): string => {
|
|
2
|
+
const url = new URL(urlString)
|
|
3
|
+
|
|
4
|
+
const params = url.searchParams
|
|
5
|
+
|
|
6
|
+
if (params.has("bundlerProvider")) {
|
|
7
|
+
params.set("bundlerProvider", "PIMLICO")
|
|
8
|
+
} else if (params.has("paymasterProvider")) {
|
|
9
|
+
params.set("paymasterProvider", "PIMLICO")
|
|
10
|
+
} else {
|
|
11
|
+
params.set("provider", "PIMLICO")
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
url.search = params.toString()
|
|
15
|
+
|
|
16
|
+
return url.toString()
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const hasPimlicoAsProvider = (urlString: string): boolean => {
|
|
20
|
+
const url = new URL(urlString)
|
|
21
|
+
const params = url.searchParams
|
|
22
|
+
const provider =
|
|
23
|
+
params.get("provider") ??
|
|
24
|
+
params.get("bundlerProvider") ??
|
|
25
|
+
params.get("paymasterProvider")
|
|
26
|
+
if (provider === "PIMLICO") return true
|
|
27
|
+
return false
|
|
28
|
+
}
|
package/constants.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EntryPointVersion } from "permissionless/types/entrypoint"
|
|
2
|
-
import { type Address } from "viem"
|
|
2
|
+
import { type Address, type Hex } from "viem"
|
|
3
3
|
|
|
4
4
|
export const DUMMY_ECDSA_SIG =
|
|
5
5
|
"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c"
|
|
@@ -10,7 +10,7 @@ export const KernelImplToVersionMap: { [key: Address]: string } = {
|
|
|
10
10
|
"0xD3F582F6B4814E989Ee8E96bc3175320B5A540ab": "0.2.3",
|
|
11
11
|
"0x5FC0236D6c88a65beD32EECDC5D60a5CAb377717": "0.2.3",
|
|
12
12
|
"0xd3082872F8B06073A021b4602e022d5A070d7cfC": "0.2.4",
|
|
13
|
-
"
|
|
13
|
+
"0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27": "0.3.0-beta"
|
|
14
14
|
}
|
|
15
15
|
export const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1"
|
|
16
16
|
export const KERNEL_NAME = "Kernel"
|
|
@@ -41,3 +41,7 @@ export enum EXEC_TYPE {
|
|
|
41
41
|
// Address was found here: https://github.com/safe-global/safe-deployments/blob/926ec6bbe2ebcac3aa2c2c6c0aff74aa590cbc6a/src/assets/v1.4.1/create_call.json
|
|
42
42
|
export const safeCreateCallAddress =
|
|
43
43
|
"0x9b35Af71d77eaf8d7e40252370304687390A1A52"
|
|
44
|
+
export const KernelFactoryToInitCodeHashMap: { [key: Address]: Hex } = {
|
|
45
|
+
"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3":
|
|
46
|
+
"0xee9d8350bd899dd261db689aafd87eb8a30f085adbaff48152399438ff4eed73"
|
|
47
|
+
}
|
package/package.json
CHANGED
|
@@ -29,8 +29,13 @@ export class KernelEIP1193Provider<
|
|
|
29
29
|
return this.handleEthAccounts()
|
|
30
30
|
case "eth_sendTransaction":
|
|
31
31
|
return this.handleEthSendTransaction(params)
|
|
32
|
+
case "eth_sign":
|
|
33
|
+
return this.handleEthSign(params as [string, string])
|
|
32
34
|
case "personal_sign":
|
|
33
35
|
return this.handlePersonalSign(params as [string, string])
|
|
36
|
+
case "eth_signTypedData":
|
|
37
|
+
case "eth_signTypedData_v4":
|
|
38
|
+
return this.handleEthSignTypedDataV4(params as [string, string])
|
|
34
39
|
default:
|
|
35
40
|
return this.kernelClient.transport.request({ method, params })
|
|
36
41
|
}
|
|
@@ -55,6 +60,26 @@ export class KernelEIP1193Provider<
|
|
|
55
60
|
return this.kernelClient.sendTransaction(tx)
|
|
56
61
|
}
|
|
57
62
|
|
|
63
|
+
private async handleEthSign(params: [string, string]): Promise<string> {
|
|
64
|
+
if (!this.kernelClient?.account) {
|
|
65
|
+
throw new Error("account not connected!")
|
|
66
|
+
}
|
|
67
|
+
const [address, message] = params
|
|
68
|
+
if (
|
|
69
|
+
address.toLowerCase() !==
|
|
70
|
+
this.kernelClient.account.address.toLowerCase()
|
|
71
|
+
) {
|
|
72
|
+
throw new Error(
|
|
73
|
+
"cannot sign for address that is not the current account"
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return this.kernelClient.signMessage({
|
|
78
|
+
message,
|
|
79
|
+
account: this.kernelClient.account
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
|
|
58
83
|
private async handlePersonalSign(
|
|
59
84
|
params: [string, string]
|
|
60
85
|
): Promise<string> {
|
|
@@ -76,4 +101,30 @@ export class KernelEIP1193Provider<
|
|
|
76
101
|
account: this.kernelClient.account
|
|
77
102
|
})
|
|
78
103
|
}
|
|
104
|
+
|
|
105
|
+
private async handleEthSignTypedDataV4(
|
|
106
|
+
params: [string, string]
|
|
107
|
+
): Promise<string> {
|
|
108
|
+
if (!this.kernelClient?.account) {
|
|
109
|
+
throw new Error("account not connected!")
|
|
110
|
+
}
|
|
111
|
+
const [address, typedDataJSON] = params
|
|
112
|
+
const typedData = JSON.parse(typedDataJSON)
|
|
113
|
+
if (
|
|
114
|
+
address.toLowerCase() !==
|
|
115
|
+
this.kernelClient.account.address.toLowerCase()
|
|
116
|
+
) {
|
|
117
|
+
throw new Error(
|
|
118
|
+
"cannot sign for address that is not the current account"
|
|
119
|
+
)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return this.kernelClient.signTypedData({
|
|
123
|
+
account: this.kernelClient.account,
|
|
124
|
+
domain: typedData.domain,
|
|
125
|
+
types: typedData.types,
|
|
126
|
+
message: typedData.message,
|
|
127
|
+
primaryType: typedData.primaryType
|
|
128
|
+
})
|
|
129
|
+
}
|
|
79
130
|
}
|