@zerodev/sdk 4.0.5 → 4.0.7
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/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/kernel-zerodev/account.d.ts +2 -1
- package/dist/cjs/kernel-zerodev/account.js +6 -0
- package/dist/cjs/kernel-zerodev/account.js.map +1 -1
- package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.d.ts +28 -0
- package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.js +134 -0
- package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.js.map +1 -0
- package/dist/cjs/kernel-zerodev/ethers-provider/ethers-provider.d.ts +3 -3
- package/dist/cjs/kernel-zerodev/ethers-provider/ethers-provider.js +2 -2
- package/dist/cjs/kernel-zerodev/ethers-provider/ethers-provider.js.map +1 -1
- package/dist/cjs/kernel-zerodev/provider.js +13 -17
- package/dist/cjs/kernel-zerodev/provider.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/base.d.ts +2 -1
- package/dist/cjs/kernel-zerodev/validator/base.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/ecdsa-validator.d.ts +2 -1
- package/dist/cjs/kernel-zerodev/validator/ecdsa-validator.js +4 -0
- package/dist/cjs/kernel-zerodev/validator/ecdsa-validator.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/erc165-session-key-validator.d.ts +2 -1
- package/dist/cjs/kernel-zerodev/validator/erc165-session-key-validator.js +4 -0
- package/dist/cjs/kernel-zerodev/validator/erc165-session-key-validator.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/kill-switch-validator.d.ts +2 -1
- package/dist/cjs/kernel-zerodev/validator/kill-switch-validator.js +4 -0
- package/dist/cjs/kernel-zerodev/validator/kill-switch-validator.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/kernel-zerodev/account.d.ts +2 -1
- package/dist/esm/kernel-zerodev/account.js +6 -0
- package/dist/esm/kernel-zerodev/account.js.map +1 -1
- package/dist/esm/kernel-zerodev/ethers-provider/account-signer.d.ts +28 -0
- package/dist/esm/kernel-zerodev/ethers-provider/account-signer.js +132 -0
- package/dist/esm/kernel-zerodev/ethers-provider/account-signer.js.map +1 -0
- package/dist/esm/kernel-zerodev/ethers-provider/ethers-provider.d.ts +3 -3
- package/dist/esm/kernel-zerodev/ethers-provider/ethers-provider.js +2 -2
- package/dist/esm/kernel-zerodev/ethers-provider/ethers-provider.js.map +1 -1
- package/dist/esm/kernel-zerodev/provider.js +13 -17
- package/dist/esm/kernel-zerodev/provider.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/base.d.ts +2 -1
- package/dist/esm/kernel-zerodev/validator/base.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/ecdsa-validator.d.ts +2 -1
- package/dist/esm/kernel-zerodev/validator/ecdsa-validator.js +4 -0
- package/dist/esm/kernel-zerodev/validator/ecdsa-validator.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/erc165-session-key-validator.d.ts +2 -1
- package/dist/esm/kernel-zerodev/validator/erc165-session-key-validator.js +4 -0
- package/dist/esm/kernel-zerodev/validator/erc165-session-key-validator.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/kill-switch-validator.d.ts +2 -1
- package/dist/esm/kernel-zerodev/validator/kill-switch-validator.js +4 -0
- package/dist/esm/kernel-zerodev/validator/kill-switch-validator.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/account.d.ts +2 -1
- package/dist/types/kernel-zerodev/account.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts +29 -0
- package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts.map +1 -0
- package/dist/types/kernel-zerodev/ethers-provider/ethers-provider.d.ts +5 -5
- package/dist/types/kernel-zerodev/ethers-provider/ethers-provider.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/provider.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/base.d.ts +2 -1
- package/dist/types/kernel-zerodev/validator/base.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/ecdsa-validator.d.ts +2 -1
- package/dist/types/kernel-zerodev/validator/ecdsa-validator.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/erc165-session-key-validator.d.ts +2 -1
- package/dist/types/kernel-zerodev/validator/erc165-session-key-validator.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/kill-switch-validator.d.ts +2 -1
- package/dist/types/kernel-zerodev/validator/kill-switch-validator.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/kernel-zerodev/account.ts +8 -0
- package/src/kernel-zerodev/ethers-provider/account-signer.ts +165 -0
- package/src/kernel-zerodev/ethers-provider/ethers-provider.ts +6 -6
- package/src/kernel-zerodev/provider.ts +23 -25
- package/src/kernel-zerodev/validator/base.ts +4 -1
- package/src/kernel-zerodev/validator/ecdsa-validator.ts +6 -0
- package/src/kernel-zerodev/validator/erc165-session-key-validator.ts +6 -0
- package/src/kernel-zerodev/validator/kill-switch-validator.ts +6 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SmartAccountProvider, type HttpTransport, BaseSmartContractAccount, type AccountMiddlewareFn, type FeeDataMiddleware, type GasEstimatorMiddleware, type PaymasterAndDataMiddleware, type PublicErc4337Client } from "@alchemy/aa-core";
|
|
2
|
-
import {
|
|
2
|
+
import { ZeroDevAccountSigner } from "./account-signer.js";
|
|
3
3
|
import { JsonRpcProvider } from "@ethersproject/providers";
|
|
4
4
|
import type { SupportedValidators } from "../validator/types.js";
|
|
5
5
|
import type { ValidatorProviderParamsMap } from "../validator-provider/types.js";
|
|
@@ -20,13 +20,13 @@ export declare class ZeroDevEthersProvider<V extends SupportedValidators> extend
|
|
|
20
20
|
* Connects the Provider to an Account and returns a Signer
|
|
21
21
|
*
|
|
22
22
|
* @param fn - a function that takes the account provider's rpcClient and returns a BaseSmartContractAccount
|
|
23
|
-
* @returns an {@link
|
|
23
|
+
* @returns an {@link ZeroDevAccountSigner} that can be used to sign and send user operations
|
|
24
24
|
*/
|
|
25
|
-
connectToAccount(fn: (rpcClient: PublicErc4337Client) => BaseSmartContractAccount):
|
|
25
|
+
connectToAccount(fn: (rpcClient: PublicErc4337Client) => BaseSmartContractAccount): ZeroDevAccountSigner<V>;
|
|
26
26
|
/**
|
|
27
|
-
* @returns an {@link
|
|
27
|
+
* @returns an {@link ZeroDevAccountSigner} using this as the underlying provider
|
|
28
28
|
*/
|
|
29
|
-
getAccountSigner():
|
|
29
|
+
getAccountSigner(): ZeroDevAccountSigner<V>;
|
|
30
30
|
withPaymasterMiddleware: (overrides: {
|
|
31
31
|
dummyPaymasterDataMiddleware?: PaymasterAndDataMiddleware;
|
|
32
32
|
paymasterDataMiddleware?: PaymasterAndDataMiddleware;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethers-provider.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/ethers-provider/ethers-provider.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EAEpB,KAAK,aAAa,EAClB,wBAAwB,EAExB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ethers-provider.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/ethers-provider/ethers-provider.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EAEpB,KAAK,aAAa,EAClB,wBAAwB,EAExB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAIjF,qBAAa,qBAAqB,CAChC,CAAC,SAAS,mBAAmB,CAC7B,SAAQ,eAAe;IACvB,QAAQ,CAAC,eAAe,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;gBAClD,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC;WAY/C,IAAI,CAAC,CAAC,SAAS,mBAAmB,EACpD,aAAa,EAAE,CAAC,EAChB,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAoBpC;;;;;;;OAOG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAIjD;;;;;OAKG;IACH,gBAAgB,CACd,EAAE,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,wBAAwB,GAC/D,oBAAoB,CAAC,CAAC,CAAC;IAK1B;;OAEG;IACH,gBAAgB,IAAI,oBAAoB,CAAC,CAAC,CAAC;IAI3C,uBAAuB,cAAe;QACpC,4BAA4B,CAAC,EAAE,0BAA0B,CAAC;QAC1D,uBAAuB,CAAC,EAAE,0BAA0B,CAAC;KACtD,KAAG,IAAI,CAGN;IAEF,gBAAgB,aAAc,sBAAsB,KAAG,IAAI,CAGzD;IAEF,iBAAiB,aAAc,iBAAiB,KAAG,IAAI,CAGrD;IAEF,oBAAoB,aAAc,mBAAmB,KAAG,IAAI,CAG1D;IAEF,sBAAsB,IAAI,mBAAmB;CAG9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/kernel-zerodev/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,IAAI,EAET,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,MAAM,CAAC;AACd,OAAO,EAGL,KAAK,wBAAwB,EAE7B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAK5B,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EAAE,0BAA0B,EAAmB,MAAM,cAAc,CAAC;AAM3E,OAAO,KAAK,EACV,4BAA4B,EAC5B,eAAe,EACf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,0BAA0B,CAAC;IACrC,eAAe,CAAC,EAAE,4BAA4B,CAAC;IAC/C,IAAI,CAAC,EAAE,wBAAwB,GAAG;QAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;CACH,CAAC;AAEF,oBAAY,SAAS;IACnB,IAAI,IAAA;IACJ,YAAY,IAAA;CACb;AAED,KAAK,wBAAwB,CAAC,CAAC,IAAI,CAAC,SAAS,qBAAqB,GAC9D,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,YAAY,GACvC,CAAC,SAAS,0BAA0B,GACpC,SAAS,CAAC,IAAI,GACd,KAAK,CAAC;AAEV,qBAAa,eAAgB,SAAQ,oBAAoB,CAAC,aAAa,CAAC;IACtE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;gBAE5B,EACV,SAAS,EACT,KAAK,EACL,iBAAsC,EACtC,MAAoB,EACpB,OAAO,EACP,eAAe,EACf,IAAI,GACL,EAAE,qBAAqB;IA2BxB,YAAY,QAAO,MAAM,CAAmB;IAE5C,eAAe,YACJ,qBAAqB,cACnB,yBAAyB,qBAAqB,CAAC,KACzD,QAAQ,IAAI,CAAC,CAwBd;IAEF,iBAAiB,sFAIH,sBAAsB,8CAEjC,QAAQ,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/kernel-zerodev/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,IAAI,EAET,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,MAAM,CAAC;AACd,OAAO,EAGL,KAAK,wBAAwB,EAE7B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAK5B,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EAAE,0BAA0B,EAAmB,MAAM,cAAc,CAAC;AAM3E,OAAO,KAAK,EACV,4BAA4B,EAC5B,eAAe,EACf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,0BAA0B,CAAC;IACrC,eAAe,CAAC,EAAE,4BAA4B,CAAC;IAC/C,IAAI,CAAC,EAAE,wBAAwB,GAAG;QAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;CACH,CAAC;AAEF,oBAAY,SAAS;IACnB,IAAI,IAAA;IACJ,YAAY,IAAA;CACb;AAED,KAAK,wBAAwB,CAAC,CAAC,IAAI,CAAC,SAAS,qBAAqB,GAC9D,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,YAAY,GACvC,CAAC,SAAS,0BAA0B,GACpC,SAAS,CAAC,IAAI,GACd,KAAK,CAAC;AAEV,qBAAa,eAAgB,SAAQ,oBAAoB,CAAC,aAAa,CAAC;IACtE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;gBAE5B,EACV,SAAS,EACT,KAAK,EACL,iBAAsC,EACtC,MAAoB,EACpB,OAAO,EACP,eAAe,EACf,IAAI,GACL,EAAE,qBAAqB;IA2BxB,YAAY,QAAO,MAAM,CAAmB;IAE5C,eAAe,YACJ,qBAAqB,cACnB,yBAAyB,qBAAqB,CAAC,KACzD,QAAQ,IAAI,CAAC,CAwBd;IAEF,iBAAiB,sFAIH,sBAAsB,8CAEjC,QAAQ,uBAAuB,CAAC,CAuGjC;IAEF,oBAAoB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAc3C,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,KAAK;IAsBhC,UAAU,EAAE,MAAM,0BAA0B,CAK1C;IAEF,4BAA4B,EAAE,mBAAmB,CAM/C;IAEF,2BAA2B,CAAC,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC;;;IAUpE,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CA0BjE;CACH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type SmartAccountSigner, type UserOperationRequest } from "@alchemy/aa-core";
|
|
1
|
+
import { type SignTypedDataParams, type SmartAccountSigner, type UserOperationRequest } from "@alchemy/aa-core";
|
|
2
2
|
import { type Chain, type Hex, type Address, type PublicClient, type Transport } from "viem";
|
|
3
3
|
import type { PaymasterAndBundlerProviders } from "../paymaster/types.js";
|
|
4
4
|
export declare enum ValidatorMode {
|
|
@@ -39,6 +39,7 @@ export declare abstract class KernelBaseValidator {
|
|
|
39
39
|
abstract encodeDisable(enableData: Hex): Hex;
|
|
40
40
|
abstract getEnableData(): Promise<Hex>;
|
|
41
41
|
abstract signMessage(message: Uint8Array | string | Hex): Promise<Hex>;
|
|
42
|
+
abstract signTypedData(params: SignTypedDataParams): Promise<Hex>;
|
|
42
43
|
abstract signUserOp(userOp: UserOperationRequest): Promise<Hex>;
|
|
43
44
|
abstract signer(): Promise<SmartAccountSigner>;
|
|
44
45
|
abstract getDummyUserOpSignature(): Promise<Hex>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Address, type Hex, type SmartAccountSigner, type UserOperationRequest } from "@alchemy/aa-core";
|
|
1
|
+
import { type Address, type Hex, type SmartAccountSigner, type UserOperationRequest, type SignTypedDataParams } from "@alchemy/aa-core";
|
|
2
2
|
import { KernelBaseValidator, type KernelBaseValidatorParams } from "./base.js";
|
|
3
3
|
export interface ECDSAValidatorParams extends KernelBaseValidatorParams {
|
|
4
4
|
owner: SmartAccountSigner;
|
|
@@ -15,6 +15,7 @@ export declare class ECDSAValidator extends KernelBaseValidator {
|
|
|
15
15
|
getDummyUserOpSignature(): Promise<Hex>;
|
|
16
16
|
isPluginEnabled(kernelAccountAddress: Address, selector: Hex): Promise<boolean>;
|
|
17
17
|
signMessage(message: string | Uint8Array): Promise<Hex>;
|
|
18
|
+
signTypedData(params: SignTypedDataParams): Promise<Hex>;
|
|
18
19
|
signUserOp(userOp: UserOperationRequest): Promise<Hex>;
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=ecdsa-validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecdsa-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/ecdsa-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"ecdsa-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/ecdsa-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAQhF,MAAM,WAAW,oBAAqB,SAAQ,yBAAyB;IACrE,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED,qBAAa,cAAe,SAAQ,mBAAmB;IACrD,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC;gBAExB,MAAM,EAAE,oBAAoB;WAKpB,IAAI,CACtB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,cAAc,CAAC;IAUpB,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIrC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;IAIxB,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAInC,YAAY,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG;IAQhC,aAAa,CAAC,WAAW,GAAE,GAAU,GAAG,GAAG;IAQrC,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC;IAIvC,eAAe,CACnB,oBAAoB,EAAE,OAAO,EAC7B,QAAQ,EAAE,GAAG,GACZ,OAAO,CAAC,OAAO,CAAC;IAuBb,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAIvD,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxD,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;CAe7D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Address, type Hex, type SmartAccountSigner, type UserOperationRequest } from "@alchemy/aa-core";
|
|
1
|
+
import { type Address, type Hex, type SmartAccountSigner, type UserOperationRequest, type SignTypedDataParams } from "@alchemy/aa-core";
|
|
2
2
|
import { KernelBaseValidator, type KernelBaseValidatorParams } from "./base.js";
|
|
3
3
|
export interface ERC165SessionKeyValidatorParams extends KernelBaseValidatorParams {
|
|
4
4
|
sessionKey: SmartAccountSigner;
|
|
@@ -22,6 +22,7 @@ export declare class ERC165SessionKeyValidator extends KernelBaseValidator {
|
|
|
22
22
|
encodeEnable(sessionKeyEnableData: Hex): Hex;
|
|
23
23
|
encodeDisable(sessionKey: Hex): Hex;
|
|
24
24
|
signMessage(message: string | Uint8Array): Promise<Hex>;
|
|
25
|
+
signTypedData(params: SignTypedDataParams): Promise<Hex>;
|
|
25
26
|
signUserOp(userOp: UserOperationRequest): Promise<Hex>;
|
|
26
27
|
}
|
|
27
28
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc165-session-key-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/erc165-session-key-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"erc165-session-key-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/erc165-session-key-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAOhF,MAAM,WAAW,+BACf,SAAQ,yBAAyB;IACjC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,GAAG,CAAC;IACd,iBAAiB,EAAE,GAAG,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,yBAA0B,SAAQ,mBAAmB;IAChE,SAAS,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACzC,cAAc,EAAE,cAAc,CAAC;gBAEnB,MAAM,EAAE,+BAA+B;IAM7C,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIrC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAW7B,eAAe,CACnB,oBAAoB,EAAE,OAAO,EAC7B,QAAQ,EAAE,GAAG,GACZ,OAAO,CAAC,OAAO,CAAC;IAgCb,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC;IAI7C,YAAY,CAAC,oBAAoB,EAAE,GAAG,GAAG,GAAG;IAQ5C,aAAa,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG;IAQ7B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAIvD,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxD,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;CAe7D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Address, type Hex, type SmartAccountSigner, type UserOperationRequest } from "@alchemy/aa-core";
|
|
1
|
+
import { type Address, type Hex, type SmartAccountSigner, type UserOperationRequest, type SignTypedDataParams } from "@alchemy/aa-core";
|
|
2
2
|
import { KernelBaseValidator, type KernelBaseValidatorParams } from "./base.js";
|
|
3
3
|
export interface KillSwitchValidatorParams extends KernelBaseValidatorParams {
|
|
4
4
|
guardian: SmartAccountSigner;
|
|
@@ -17,6 +17,7 @@ export declare class KillSwitchValidator extends KernelBaseValidator {
|
|
|
17
17
|
isPluginEnabled(kernelAccountAddress: Address, selector: Hex): Promise<boolean>;
|
|
18
18
|
getDummyUserOpSignature(): Promise<Hex>;
|
|
19
19
|
signMessage(message: string | Uint8Array): Promise<Hex>;
|
|
20
|
+
signTypedData(params: SignTypedDataParams): Promise<Hex>;
|
|
20
21
|
signUserOp(userOp: UserOperationRequest): Promise<Hex>;
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=kill-switch-validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kill-switch-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/kill-switch-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"kill-switch-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/kill-switch-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAiBhF,MAAM,WAAW,yBAA0B,SAAQ,yBAAyB;IAC1E,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,mBAAoB,SAAQ,mBAAmB;IAC1D,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACvC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;gBAEnB,MAAM,EAAE,yBAAyB;WAMzB,IAAI,CACtB,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,mBAAmB,CAAC;IAUzB,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIrC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAInC,cAAc,IAAI,MAAM;IAIxB,YAAY,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG;IAQnC,aAAa,CAAC,WAAW,GAAE,GAAU,GAAG,GAAG;IAQrC,eAAe,CACnB,oBAAoB,EAAE,OAAO,EAC7B,QAAQ,EAAE,GAAG,GACZ,OAAO,CAAC,OAAO,CAAC;IA4Bb,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC;IAIvC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAIvD,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxD,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;CAuB7D"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -36,6 +36,7 @@ export { ZeroDevProvider } from "./kernel-zerodev/provider.js";
|
|
|
36
36
|
export * from "./kernel-zerodev/utils.js";
|
|
37
37
|
export { getChainId } from "./kernel-zerodev/api/index.js";
|
|
38
38
|
export { ZeroDevEthersProvider } from "./kernel-zerodev/ethers-provider/ethers-provider.js";
|
|
39
|
+
export { ZeroDevAccountSigner } from "./kernel-zerodev/ethers-provider/account-signer.js";
|
|
39
40
|
|
|
40
41
|
export * as constants from "./kernel-zerodev/constants.js";
|
|
41
42
|
|
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
type UserOperationRequest,
|
|
24
24
|
defineReadOnly,
|
|
25
25
|
getChain,
|
|
26
|
+
type SignTypedDataParams,
|
|
26
27
|
} from "@alchemy/aa-core";
|
|
27
28
|
import {
|
|
28
29
|
BUNDLER_URL,
|
|
@@ -223,6 +224,13 @@ export class KernelSmartContractAccount<
|
|
|
223
224
|
return await this.validator.signMessage(formattedMessage);
|
|
224
225
|
}
|
|
225
226
|
|
|
227
|
+
async signTypedData(params: SignTypedDataParams): Promise<Hex> {
|
|
228
|
+
if (!this.validator) {
|
|
229
|
+
throw new Error("Validator not connected");
|
|
230
|
+
}
|
|
231
|
+
return await this.validator.signTypedData(params);
|
|
232
|
+
}
|
|
233
|
+
|
|
226
234
|
signUserOp(userOp: UserOperationRequest): Promise<Hex> {
|
|
227
235
|
if (!this.validator) {
|
|
228
236
|
throw new Error("Validator not connected");
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BaseSmartContractAccount,
|
|
3
|
+
resolveProperties,
|
|
4
|
+
type AccountMiddlewareFn,
|
|
5
|
+
type FeeDataMiddleware,
|
|
6
|
+
type GasEstimatorMiddleware,
|
|
7
|
+
type PaymasterAndDataMiddleware,
|
|
8
|
+
type PublicErc4337Client,
|
|
9
|
+
type SignTypedDataParams,
|
|
10
|
+
} from "@alchemy/aa-core";
|
|
11
|
+
import {
|
|
12
|
+
Signer,
|
|
13
|
+
type TypedDataSigner,
|
|
14
|
+
type TypedDataDomain,
|
|
15
|
+
type TypedDataField,
|
|
16
|
+
} from "@ethersproject/abstract-signer";
|
|
17
|
+
import { hexlify } from "@ethersproject/bytes";
|
|
18
|
+
import { _TypedDataEncoder } from "@ethersproject/hash";
|
|
19
|
+
import type { Deferrable } from "@ethersproject/properties";
|
|
20
|
+
import {
|
|
21
|
+
type TransactionRequest,
|
|
22
|
+
type TransactionResponse,
|
|
23
|
+
} from "@ethersproject/providers";
|
|
24
|
+
import { ZeroDevEthersProvider } from "./ethers-provider.js";
|
|
25
|
+
import type { SupportedValidators } from "../validator/types.js";
|
|
26
|
+
|
|
27
|
+
const hexlifyOptional = (value: any): `0x${string}` | undefined => {
|
|
28
|
+
if (value == null) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return hexlify(value) as `0x${string}`;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export class ZeroDevAccountSigner<V extends SupportedValidators>
|
|
36
|
+
extends Signer
|
|
37
|
+
implements TypedDataSigner
|
|
38
|
+
{
|
|
39
|
+
private account?: BaseSmartContractAccount;
|
|
40
|
+
|
|
41
|
+
sendUserOperation;
|
|
42
|
+
waitForUserOperationTransaction;
|
|
43
|
+
|
|
44
|
+
constructor(readonly provider: ZeroDevEthersProvider<V>) {
|
|
45
|
+
super();
|
|
46
|
+
this.account = this.provider.accountProvider.account;
|
|
47
|
+
|
|
48
|
+
this.sendUserOperation =
|
|
49
|
+
this.provider.accountProvider.sendUserOperation.bind(
|
|
50
|
+
this.provider.accountProvider
|
|
51
|
+
);
|
|
52
|
+
this.waitForUserOperationTransaction =
|
|
53
|
+
this.provider.accountProvider.waitForUserOperationTransaction.bind(
|
|
54
|
+
this.provider.accountProvider
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
getAddress(): Promise<string> {
|
|
59
|
+
if (!this.account) {
|
|
60
|
+
throw new Error(
|
|
61
|
+
"connect the signer to a provider that has a connected account"
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return this.account.getAddress();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
signMessage(message: string | Uint8Array): Promise<string> {
|
|
69
|
+
if (!this.account) {
|
|
70
|
+
throw new Error(
|
|
71
|
+
"connect the signer to a provider that has a connected account"
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return this.account.signMessage(message);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
signTypedData(params: SignTypedDataParams): Promise<string> {
|
|
79
|
+
if (!this.account) {
|
|
80
|
+
throw new Error(
|
|
81
|
+
"connect the signer to a provider that has a connected account"
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
if (params.types) {
|
|
85
|
+
delete params.types["EIP712Domain"];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return this.account.signTypedData(params);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
_signTypedData(
|
|
92
|
+
domain: TypedDataDomain,
|
|
93
|
+
types: Record<string, Array<TypedDataField>>,
|
|
94
|
+
value: Record<string, any>
|
|
95
|
+
): Promise<string> {
|
|
96
|
+
if (!this.account) {
|
|
97
|
+
throw new Error(
|
|
98
|
+
"connect the signer to a provider that has a connected account"
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
const params = _TypedDataEncoder.getPayload(
|
|
102
|
+
domain,
|
|
103
|
+
types,
|
|
104
|
+
value
|
|
105
|
+
) as SignTypedDataParams;
|
|
106
|
+
if (params.types) {
|
|
107
|
+
delete params.types["EIP712Domain"];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return this.signTypedData(params);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
withPaymasterMiddleware = (overrides: {
|
|
114
|
+
dummyPaymasterDataMiddleware?: PaymasterAndDataMiddleware;
|
|
115
|
+
paymasterDataMiddleware?: PaymasterAndDataMiddleware;
|
|
116
|
+
}): this => {
|
|
117
|
+
this.provider.withPaymasterMiddleware(overrides);
|
|
118
|
+
return this;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
withGasEstimator = (override: GasEstimatorMiddleware): this => {
|
|
122
|
+
this.provider.withGasEstimator(override);
|
|
123
|
+
return this;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
withFeeDataGetter = (override: FeeDataMiddleware): this => {
|
|
127
|
+
this.provider.withFeeDataGetter(override);
|
|
128
|
+
return this;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
withCustomMiddleware = (override: AccountMiddlewareFn): this => {
|
|
132
|
+
this.provider.withCustomMiddleware(override);
|
|
133
|
+
return this;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
async sendTransaction(
|
|
137
|
+
transaction: Deferrable<TransactionRequest>
|
|
138
|
+
): Promise<TransactionResponse> {
|
|
139
|
+
const resolved = await resolveProperties(transaction);
|
|
140
|
+
const txHash = await this.provider.accountProvider.sendTransaction({
|
|
141
|
+
// TODO: need to support gas fields as well
|
|
142
|
+
from: (await this.getAddress()) as `0x${string}`,
|
|
143
|
+
to: resolved.to as `0x${string}` | undefined,
|
|
144
|
+
data: hexlifyOptional(resolved.data),
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
return this.provider.getTransaction(txHash);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
signTransaction(
|
|
151
|
+
_transaction: Deferrable<TransactionRequest>
|
|
152
|
+
): Promise<string> {
|
|
153
|
+
throw new Error(
|
|
154
|
+
"Transaction signing is not supported, use sendUserOperation instead"
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
getPublicErc4337Client(): PublicErc4337Client {
|
|
159
|
+
return this.provider.getPublicErc4337Client();
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
connect(provider: ZeroDevEthersProvider<V>): ZeroDevAccountSigner<V> {
|
|
163
|
+
return new ZeroDevAccountSigner(provider);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
type PaymasterAndDataMiddleware,
|
|
12
12
|
type PublicErc4337Client,
|
|
13
13
|
} from "@alchemy/aa-core";
|
|
14
|
-
import {
|
|
14
|
+
import { ZeroDevAccountSigner } from "./account-signer.js";
|
|
15
15
|
import { JsonRpcProvider } from "@ethersproject/providers";
|
|
16
16
|
import type { SupportedValidators } from "../validator/types.js";
|
|
17
17
|
import type { ValidatorProviderParamsMap } from "../validator-provider/types.js";
|
|
@@ -73,20 +73,20 @@ export class ZeroDevEthersProvider<
|
|
|
73
73
|
* Connects the Provider to an Account and returns a Signer
|
|
74
74
|
*
|
|
75
75
|
* @param fn - a function that takes the account provider's rpcClient and returns a BaseSmartContractAccount
|
|
76
|
-
* @returns an {@link
|
|
76
|
+
* @returns an {@link ZeroDevAccountSigner} that can be used to sign and send user operations
|
|
77
77
|
*/
|
|
78
78
|
connectToAccount(
|
|
79
79
|
fn: (rpcClient: PublicErc4337Client) => BaseSmartContractAccount
|
|
80
|
-
):
|
|
80
|
+
): ZeroDevAccountSigner<V> {
|
|
81
81
|
defineReadOnly(this, "accountProvider", this.accountProvider.connect(fn));
|
|
82
82
|
return this.getAccountSigner();
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
/**
|
|
86
|
-
* @returns an {@link
|
|
86
|
+
* @returns an {@link ZeroDevAccountSigner} using this as the underlying provider
|
|
87
87
|
*/
|
|
88
|
-
getAccountSigner():
|
|
89
|
-
return new
|
|
88
|
+
getAccountSigner(): ZeroDevAccountSigner<V> {
|
|
89
|
+
return new ZeroDevAccountSigner(this);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
withPaymasterMiddleware = (overrides: {
|
|
@@ -182,30 +182,25 @@ export class ZeroDevProvider extends SmartAccountProvider<HttpTransport> {
|
|
|
182
182
|
const initCode = await this.account.getInitCode();
|
|
183
183
|
let hash: string = "";
|
|
184
184
|
let i = 0;
|
|
185
|
-
let maxFeePerGas = 0n;
|
|
186
|
-
let maxPriorityFeePerGas = 0n;
|
|
187
|
-
let request: UserOperationStruct;
|
|
188
|
-
|
|
189
185
|
const nonce = await this.account.getNonce();
|
|
186
|
+
const uoStruct = await asyncPipe(
|
|
187
|
+
this.dummyPaymasterDataMiddleware,
|
|
188
|
+
this.feeDataGetter,
|
|
189
|
+
this.paymasterDataMiddleware,
|
|
190
|
+
this.gasEstimator,
|
|
191
|
+
this.customMiddleware ?? noOpMiddleware,
|
|
192
|
+
async (struct) => ({ ...struct, ...overrides })
|
|
193
|
+
)({
|
|
194
|
+
initCode,
|
|
195
|
+
sender: this.getAddress(),
|
|
196
|
+
nonce,
|
|
197
|
+
callData,
|
|
198
|
+
signature: await this.account
|
|
199
|
+
.getValidator()
|
|
200
|
+
.getDynamicDummySignature(await this.getAddress(), callData as Hex),
|
|
201
|
+
} as UserOperationStruct);
|
|
202
|
+
let request: UserOperationStruct;
|
|
190
203
|
do {
|
|
191
|
-
const uoStruct = await asyncPipe(
|
|
192
|
-
this.dummyPaymasterDataMiddleware,
|
|
193
|
-
this.feeDataGetter,
|
|
194
|
-
this.paymasterDataMiddleware,
|
|
195
|
-
this.gasEstimator,
|
|
196
|
-
this.customMiddleware ?? noOpMiddleware,
|
|
197
|
-
async (struct) => ({ ...struct, ...overrides })
|
|
198
|
-
)({
|
|
199
|
-
initCode,
|
|
200
|
-
sender: this.getAddress(),
|
|
201
|
-
nonce,
|
|
202
|
-
callData,
|
|
203
|
-
signature: await this.account
|
|
204
|
-
.getValidator()
|
|
205
|
-
.getDynamicDummySignature(await this.getAddress(), callData as Hex),
|
|
206
|
-
maxFeePerGas,
|
|
207
|
-
maxPriorityFeePerGas,
|
|
208
|
-
} as UserOperationStruct);
|
|
209
204
|
request = deepHexlify(await resolveProperties(uoStruct));
|
|
210
205
|
|
|
211
206
|
if (!isValidRequest(request)) {
|
|
@@ -227,13 +222,16 @@ export class ZeroDevProvider extends SmartAccountProvider<HttpTransport> {
|
|
|
227
222
|
);
|
|
228
223
|
} catch (error: any) {
|
|
229
224
|
if (this.isReplacementOpError(error) && i++ < this.sendTxMaxRetries) {
|
|
230
|
-
maxFeePerGas = (BigInt(request.maxFeePerGas) * 113n) / 100n;
|
|
231
|
-
maxPriorityFeePerGas =
|
|
225
|
+
uoStruct.maxFeePerGas = (BigInt(request.maxFeePerGas) * 113n) / 100n;
|
|
226
|
+
uoStruct.maxPriorityFeePerGas =
|
|
232
227
|
(BigInt(request.maxPriorityFeePerGas) * 113n) / 100n;
|
|
228
|
+
|
|
233
229
|
console.log(
|
|
234
230
|
`After ${
|
|
235
231
|
this.sendTxRetryIntervalMs / 60000
|
|
236
|
-
} minutes, resending tx with Increased Gas fees: maxFeePerGas: ${
|
|
232
|
+
} minutes, resending tx with Increased Gas fees: maxFeePerGas: ${
|
|
233
|
+
uoStruct.maxFeePerGas
|
|
234
|
+
}, maxPriorityFeePerGas: ${uoStruct.maxPriorityFeePerGas}`
|
|
237
235
|
);
|
|
238
236
|
await new Promise((resolve) =>
|
|
239
237
|
setTimeout(resolve, this.sendTxRetryIntervalMs)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
type SignTypedDataParams,
|
|
2
3
|
type SmartAccountSigner,
|
|
3
4
|
type UserOperationRequest,
|
|
4
5
|
} from "@alchemy/aa-core";
|
|
@@ -91,6 +92,8 @@ export abstract class KernelBaseValidator {
|
|
|
91
92
|
|
|
92
93
|
abstract signMessage(message: Uint8Array | string | Hex): Promise<Hex>;
|
|
93
94
|
|
|
95
|
+
abstract signTypedData(params: SignTypedDataParams): Promise<Hex>;
|
|
96
|
+
|
|
94
97
|
abstract signUserOp(userOp: UserOperationRequest): Promise<Hex>;
|
|
95
98
|
|
|
96
99
|
abstract signer(): Promise<SmartAccountSigner>;
|
|
@@ -160,7 +163,7 @@ export abstract class KernelBaseValidator {
|
|
|
160
163
|
}
|
|
161
164
|
const sender = kernel;
|
|
162
165
|
const signer = await this.signer();
|
|
163
|
-
const ownerSig = await
|
|
166
|
+
const ownerSig = await signer.signTypedData({
|
|
164
167
|
domain: {
|
|
165
168
|
name: "Kernel",
|
|
166
169
|
version: "0.2.1",
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
type Hex,
|
|
6
6
|
type SmartAccountSigner,
|
|
7
7
|
type UserOperationRequest,
|
|
8
|
+
type SignTypedDataParams,
|
|
8
9
|
} from "@alchemy/aa-core";
|
|
9
10
|
import { KernelBaseValidator, type KernelBaseValidatorParams } from "./base.js";
|
|
10
11
|
import { encodeFunctionData, toBytes } from "viem";
|
|
@@ -12,6 +13,7 @@ import { ECDSAValidatorAbi } from "../abis/ESCDAValidatorAbi.js";
|
|
|
12
13
|
import { getChainId } from "../api/index.js";
|
|
13
14
|
import { DUMMY_ECDSA_SIG } from "../constants.js";
|
|
14
15
|
import { KernelAccountAbi } from "../abis/KernelAccountAbi.js";
|
|
16
|
+
import { fixSignedData } from "../utils.js";
|
|
15
17
|
|
|
16
18
|
export interface ECDSAValidatorParams extends KernelBaseValidatorParams {
|
|
17
19
|
owner: SmartAccountSigner;
|
|
@@ -99,6 +101,10 @@ export class ECDSAValidator extends KernelBaseValidator {
|
|
|
99
101
|
return await this.owner.signMessage(message);
|
|
100
102
|
}
|
|
101
103
|
|
|
104
|
+
async signTypedData(params: SignTypedDataParams): Promise<Hex> {
|
|
105
|
+
return fixSignedData(await this.owner.signTypedData(params));
|
|
106
|
+
}
|
|
107
|
+
|
|
102
108
|
async signUserOp(userOp: UserOperationRequest): Promise<Hex> {
|
|
103
109
|
if (!this.chain) {
|
|
104
110
|
throw new Error("Validator uninitialized");
|
|
@@ -4,12 +4,14 @@ import {
|
|
|
4
4
|
type Hex,
|
|
5
5
|
type SmartAccountSigner,
|
|
6
6
|
type UserOperationRequest,
|
|
7
|
+
type SignTypedDataParams,
|
|
7
8
|
} from "@alchemy/aa-core";
|
|
8
9
|
import { KernelBaseValidator, type KernelBaseValidatorParams } from "./base.js";
|
|
9
10
|
import { encodeFunctionData, toBytes, concat, pad, toHex } from "viem";
|
|
10
11
|
import { ERC165SessionKeyValidatorAbi } from "../abis/ERC165SessionKeyValidatorAbi.js";
|
|
11
12
|
import { DUMMY_ECDSA_SIG } from "../constants.js";
|
|
12
13
|
import { KernelAccountAbi } from "../abis/KernelAccountAbi.js";
|
|
14
|
+
import { fixSignedData } from "../utils.js";
|
|
13
15
|
|
|
14
16
|
export interface ERC165SessionKeyValidatorParams
|
|
15
17
|
extends KernelBaseValidatorParams {
|
|
@@ -109,6 +111,10 @@ export class ERC165SessionKeyValidator extends KernelBaseValidator {
|
|
|
109
111
|
return await this.sessionKey.signMessage(message);
|
|
110
112
|
}
|
|
111
113
|
|
|
114
|
+
async signTypedData(params: SignTypedDataParams): Promise<Hex> {
|
|
115
|
+
return fixSignedData(await this.sessionKey.signTypedData(params));
|
|
116
|
+
}
|
|
117
|
+
|
|
112
118
|
async signUserOp(userOp: UserOperationRequest): Promise<Hex> {
|
|
113
119
|
if (!this.chain) {
|
|
114
120
|
throw new Error("Validator uninitialized");
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
type Hex,
|
|
6
6
|
type SmartAccountSigner,
|
|
7
7
|
type UserOperationRequest,
|
|
8
|
+
type SignTypedDataParams,
|
|
8
9
|
} from "@alchemy/aa-core";
|
|
9
10
|
import { KernelBaseValidator, type KernelBaseValidatorParams } from "./base.js";
|
|
10
11
|
import {
|
|
@@ -21,6 +22,7 @@ import { KillSwitchValidatorAbi } from "../abis/KillSwitchValidatorAbi.js";
|
|
|
21
22
|
import { getChainId } from "../api/index.js";
|
|
22
23
|
import { DUMMY_ECDSA_SIG } from "../constants.js";
|
|
23
24
|
import { KernelAccountAbi } from "../abis/KernelAccountAbi.js";
|
|
25
|
+
import { fixSignedData } from "../utils.js";
|
|
24
26
|
|
|
25
27
|
export interface KillSwitchValidatorParams extends KernelBaseValidatorParams {
|
|
26
28
|
guardian: SmartAccountSigner;
|
|
@@ -116,6 +118,10 @@ export class KillSwitchValidator extends KernelBaseValidator {
|
|
|
116
118
|
return await this.guardian.signMessage(message);
|
|
117
119
|
}
|
|
118
120
|
|
|
121
|
+
async signTypedData(params: SignTypedDataParams): Promise<Hex> {
|
|
122
|
+
return fixSignedData(await this.guardian.signTypedData(params));
|
|
123
|
+
}
|
|
124
|
+
|
|
119
125
|
async signUserOp(userOp: UserOperationRequest): Promise<Hex> {
|
|
120
126
|
const pausedUntil = this.getPausedUntil();
|
|
121
127
|
if (!this.chain) {
|