@zerodev/sdk 4.0.2-alpha.23 → 4.0.2-alpha.24

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.
Files changed (49) hide show
  1. package/README.md +8 -8
  2. package/dist/cjs/index.d.ts +0 -1
  3. package/dist/cjs/index.js +1 -3
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/kernel-zerodev/provider.d.ts +4 -3
  6. package/dist/cjs/kernel-zerodev/provider.js +26 -2
  7. package/dist/cjs/kernel-zerodev/provider.js.map +1 -1
  8. package/dist/cjs/kernel-zerodev/utils.d.ts +3 -1
  9. package/dist/cjs/kernel-zerodev/utils.js +12 -1
  10. package/dist/cjs/kernel-zerodev/utils.js.map +1 -1
  11. package/dist/cjs/kernel-zerodev/validator/base.d.ts +1 -1
  12. package/dist/cjs/kernel-zerodev/validator/base.js +2 -1
  13. package/dist/cjs/kernel-zerodev/validator/base.js.map +1 -1
  14. package/dist/esm/index.d.ts +0 -1
  15. package/dist/esm/index.js +0 -1
  16. package/dist/esm/index.js.map +1 -1
  17. package/dist/esm/kernel-zerodev/provider.d.ts +4 -3
  18. package/dist/esm/kernel-zerodev/provider.js +26 -3
  19. package/dist/esm/kernel-zerodev/provider.js.map +1 -1
  20. package/dist/esm/kernel-zerodev/utils.d.ts +3 -1
  21. package/dist/esm/kernel-zerodev/utils.js +11 -0
  22. package/dist/esm/kernel-zerodev/utils.js.map +1 -1
  23. package/dist/esm/kernel-zerodev/validator/base.d.ts +1 -1
  24. package/dist/esm/kernel-zerodev/validator/base.js +2 -1
  25. package/dist/esm/kernel-zerodev/validator/base.js.map +1 -1
  26. package/dist/types/index.d.ts +0 -1
  27. package/dist/types/index.d.ts.map +1 -1
  28. package/dist/types/kernel-zerodev/provider.d.ts +4 -3
  29. package/dist/types/kernel-zerodev/provider.d.ts.map +1 -1
  30. package/dist/types/kernel-zerodev/utils.d.ts +3 -1
  31. package/dist/types/kernel-zerodev/utils.d.ts.map +1 -1
  32. package/dist/types/kernel-zerodev/validator/base.d.ts +1 -1
  33. package/dist/types/kernel-zerodev/validator/base.d.ts.map +1 -1
  34. package/package.json +8 -9
  35. package/src/index.ts +0 -1
  36. package/src/kernel-zerodev/__tests__/mocks/mock-signer.ts +13 -3
  37. package/src/kernel-zerodev/provider.ts +35 -1
  38. package/src/kernel-zerodev/utils.ts +31 -2
  39. package/src/kernel-zerodev/validator/base.ts +3 -2
  40. package/dist/cjs/kernel-zerodev/signer/zd-local-account.d.ts +0 -13
  41. package/dist/cjs/kernel-zerodev/signer/zd-local-account.js +0 -61
  42. package/dist/cjs/kernel-zerodev/signer/zd-local-account.js.map +0 -1
  43. package/dist/esm/kernel-zerodev/signer/zd-local-account.d.ts +0 -13
  44. package/dist/esm/kernel-zerodev/signer/zd-local-account.js +0 -58
  45. package/dist/esm/kernel-zerodev/signer/zd-local-account.js.map +0 -1
  46. package/dist/types/kernel-zerodev/signer/zd-local-account.d.ts +0 -14
  47. package/dist/types/kernel-zerodev/signer/zd-local-account.d.ts.map +0 -1
  48. package/src/kernel-zerodev/__tests__/mocks/mock-signer-validator.ts +0 -20
  49. package/src/kernel-zerodev/signer/zd-local-account.ts +0 -63
@@ -23,6 +23,7 @@ import {
23
23
  ENTRYPOINT_ADDRESS,
24
24
  } from "../constants.js";
25
25
  import type { PaymasterAndBundlerProviders } from "../paymaster/types.js";
26
+ import { polygonMumbai } from "viem/dist/types/chains/index.js";
26
27
 
27
28
  export enum ValidatorMode {
28
29
  sudo = "0x00000000",
@@ -60,7 +61,7 @@ export abstract class KernelBaseValidator {
60
61
  protected selector?: string;
61
62
  protected rpcUrl?: string;
62
63
  protected bundlerProvider?: PaymasterAndBundlerProviders;
63
- protected publicClient?: PublicClient<Transport, Chain, true>;
64
+ protected publicClient?: PublicClient<Transport, Chain>;
64
65
 
65
66
  constructor(params: KernelBaseValidatorParams) {
66
67
  this.projectId = params.projectId;
@@ -87,7 +88,7 @@ export abstract class KernelBaseValidator {
87
88
  : {},
88
89
  },
89
90
  }),
90
- chain: this.chain,
91
+ chain: this.chain ?? polygonMumbai,
91
92
  });
92
93
  }
93
94
 
@@ -1,13 +0,0 @@
1
- import { type SmartAccountSigner } from "@alchemy/aa-core";
2
- import { type HDAccount, type Hash, type PrivateKeyAccount, type TypedData, type TypedDataDefinition, type Hex } from "viem";
3
- export declare class ZeroDevLocalAccountSigner<T extends HDAccount | PrivateKeyAccount> implements SmartAccountSigner {
4
- private owner;
5
- constructor(owner: T);
6
- readonly signMessage: (msg: string | Uint8Array) => Promise<`0x${string}`>;
7
- readonly signTypedData: <TTypedData extends TypedData | {
8
- [key: string]: unknown;
9
- }, TPrimaryType extends string = string>(typedData: TypedDataDefinition<TTypedData, TPrimaryType>) => Promise<Hash>;
10
- readonly getAddress: () => Promise<`0x${string}`>;
11
- static mnemonicToAccountSigner(key: string): ZeroDevLocalAccountSigner<HDAccount>;
12
- static privateKeyToAccountSigner(key: Hex): ZeroDevLocalAccountSigner<PrivateKeyAccount>;
13
- }
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZeroDevLocalAccountSigner = void 0;
4
- const viem_1 = require("viem");
5
- const accounts_1 = require("viem/accounts");
6
- class ZeroDevLocalAccountSigner {
7
- constructor(owner) {
8
- Object.defineProperty(this, "owner", {
9
- enumerable: true,
10
- configurable: true,
11
- writable: true,
12
- value: void 0
13
- });
14
- Object.defineProperty(this, "signMessage", {
15
- enumerable: true,
16
- configurable: true,
17
- writable: true,
18
- value: (msg) => {
19
- if (typeof msg === "string" && !(0, viem_1.isHex)(msg)) {
20
- return this.owner.signMessage({
21
- message: msg,
22
- });
23
- }
24
- else {
25
- return this.owner.signMessage({
26
- message: {
27
- raw: msg,
28
- },
29
- });
30
- }
31
- }
32
- });
33
- Object.defineProperty(this, "signTypedData", {
34
- enumerable: true,
35
- configurable: true,
36
- writable: true,
37
- value: async (typedData) => {
38
- return await this.owner.signTypedData(typedData);
39
- }
40
- });
41
- Object.defineProperty(this, "getAddress", {
42
- enumerable: true,
43
- configurable: true,
44
- writable: true,
45
- value: async () => {
46
- return this.owner.address;
47
- }
48
- });
49
- this.owner = owner;
50
- }
51
- static mnemonicToAccountSigner(key) {
52
- const owner = (0, accounts_1.mnemonicToAccount)(key);
53
- return new ZeroDevLocalAccountSigner(owner);
54
- }
55
- static privateKeyToAccountSigner(key) {
56
- const owner = (0, accounts_1.privateKeyToAccount)(key);
57
- return new ZeroDevLocalAccountSigner(owner);
58
- }
59
- }
60
- exports.ZeroDevLocalAccountSigner = ZeroDevLocalAccountSigner;
61
- //# sourceMappingURL=zd-local-account.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zd-local-account.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/signer/zd-local-account.ts"],"names":[],"mappings":";;;AACA,+BAQc;AACd,4CAAuE;AAEvE,MAAa,yBAAyB;IAIpC,YAAY,KAAQ;QADZ;;;;;WAAS;QAKR;;;;mBAAoE,CAC3E,GAAG,EACH,EAAE;gBACF,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAA,YAAK,EAAC,GAAG,CAAC,EAAE;oBAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;wBAC5B,OAAO,EAAE,GAAG;qBACb,CAAC,CAAC;iBACJ;qBAAM;oBACL,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;wBAC5B,OAAO,EAAE;4BACP,GAAG,EAAE,GAAG;yBACT;qBACF,CAAC,CAAC;iBACJ;YACH,CAAC;WAAC;QAEO;;;;mBAKY,KAAK,EAAE,SAAS,EAAE,EAAE;gBACvC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACnD,CAAC;WAAC;QAEO;;;;mBAA2C,KAAK,IAAI,EAAE;gBAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAC5B,CAAC;WAAC;QA9BA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IA+BD,MAAM,CAAC,uBAAuB,CAC5B,GAAW;QAEX,MAAM,KAAK,GAAG,IAAA,4BAAiB,EAAC,GAAG,CAAC,CAAC;QACrC,OAAO,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,yBAAyB,CAC9B,GAAQ;QAER,MAAM,KAAK,GAAG,IAAA,8BAAmB,EAAC,GAAG,CAAC,CAAC;QACvC,OAAO,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;CACF;AAlDD,8DAkDC","sourcesContent":["import { type SmartAccountSigner } from \"@alchemy/aa-core\";\nimport {\n isHex,\n type HDAccount,\n type Hash,\n type PrivateKeyAccount,\n type TypedData,\n type TypedDataDefinition,\n type Hex,\n} from \"viem\";\nimport { mnemonicToAccount, privateKeyToAccount } from \"viem/accounts\";\n\nexport class ZeroDevLocalAccountSigner<T extends HDAccount | PrivateKeyAccount>\n implements SmartAccountSigner\n{\n private owner: T;\n constructor(owner: T) {\n this.owner = owner;\n }\n\n readonly signMessage: (msg: string | Uint8Array) => Promise<`0x${string}`> = (\n msg\n ) => {\n if (typeof msg === \"string\" && !isHex(msg)) {\n return this.owner.signMessage({\n message: msg,\n });\n } else {\n return this.owner.signMessage({\n message: {\n raw: msg,\n },\n });\n }\n };\n\n readonly signTypedData: <\n TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string = string\n >(\n typedData: TypedDataDefinition<TTypedData, TPrimaryType>\n ) => Promise<Hash> = async (typedData) => {\n return await this.owner.signTypedData(typedData);\n };\n\n readonly getAddress: () => Promise<`0x${string}`> = async () => {\n return this.owner.address;\n };\n\n static mnemonicToAccountSigner(\n key: string\n ): ZeroDevLocalAccountSigner<HDAccount> {\n const owner = mnemonicToAccount(key);\n return new ZeroDevLocalAccountSigner(owner);\n }\n\n static privateKeyToAccountSigner(\n key: Hex\n ): ZeroDevLocalAccountSigner<PrivateKeyAccount> {\n const owner = privateKeyToAccount(key);\n return new ZeroDevLocalAccountSigner(owner);\n }\n}\n"]}
@@ -1,13 +0,0 @@
1
- import { type SmartAccountSigner } from "@alchemy/aa-core";
2
- import { type HDAccount, type Hash, type PrivateKeyAccount, type TypedData, type TypedDataDefinition, type Hex } from "viem";
3
- export declare class ZeroDevLocalAccountSigner<T extends HDAccount | PrivateKeyAccount> implements SmartAccountSigner {
4
- private owner;
5
- constructor(owner: T);
6
- readonly signMessage: (msg: string | Uint8Array) => Promise<`0x${string}`>;
7
- readonly signTypedData: <TTypedData extends TypedData | {
8
- [key: string]: unknown;
9
- }, TPrimaryType extends string = string>(typedData: TypedDataDefinition<TTypedData, TPrimaryType>) => Promise<Hash>;
10
- readonly getAddress: () => Promise<`0x${string}`>;
11
- static mnemonicToAccountSigner(key: string): ZeroDevLocalAccountSigner<HDAccount>;
12
- static privateKeyToAccountSigner(key: Hex): ZeroDevLocalAccountSigner<PrivateKeyAccount>;
13
- }
@@ -1,58 +0,0 @@
1
- import {} from "@alchemy/aa-core";
2
- import { isHex, } from "viem";
3
- import { mnemonicToAccount, privateKeyToAccount } from "viem/accounts";
4
- export class ZeroDevLocalAccountSigner {
5
- constructor(owner) {
6
- Object.defineProperty(this, "owner", {
7
- enumerable: true,
8
- configurable: true,
9
- writable: true,
10
- value: void 0
11
- });
12
- Object.defineProperty(this, "signMessage", {
13
- enumerable: true,
14
- configurable: true,
15
- writable: true,
16
- value: (msg) => {
17
- if (typeof msg === "string" && !isHex(msg)) {
18
- return this.owner.signMessage({
19
- message: msg,
20
- });
21
- }
22
- else {
23
- return this.owner.signMessage({
24
- message: {
25
- raw: msg,
26
- },
27
- });
28
- }
29
- }
30
- });
31
- Object.defineProperty(this, "signTypedData", {
32
- enumerable: true,
33
- configurable: true,
34
- writable: true,
35
- value: async (typedData) => {
36
- return await this.owner.signTypedData(typedData);
37
- }
38
- });
39
- Object.defineProperty(this, "getAddress", {
40
- enumerable: true,
41
- configurable: true,
42
- writable: true,
43
- value: async () => {
44
- return this.owner.address;
45
- }
46
- });
47
- this.owner = owner;
48
- }
49
- static mnemonicToAccountSigner(key) {
50
- const owner = mnemonicToAccount(key);
51
- return new ZeroDevLocalAccountSigner(owner);
52
- }
53
- static privateKeyToAccountSigner(key) {
54
- const owner = privateKeyToAccount(key);
55
- return new ZeroDevLocalAccountSigner(owner);
56
- }
57
- }
58
- //# sourceMappingURL=zd-local-account.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zd-local-account.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/signer/zd-local-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,KAAK,GAON,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEvE,MAAM,OAAO,yBAAyB;IAIpC,YAAY,KAAQ;QADZ;;;;;WAAS;QAKR;;;;mBAAoE,CAC3E,GAAG,EACH,EAAE;gBACF,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;wBAC5B,OAAO,EAAE,GAAG;qBACb,CAAC,CAAC;iBACJ;qBAAM;oBACL,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;wBAC5B,OAAO,EAAE;4BACP,GAAG,EAAE,GAAG;yBACT;qBACF,CAAC,CAAC;iBACJ;YACH,CAAC;WAAC;QAEO;;;;mBAKY,KAAK,EAAE,SAAS,EAAE,EAAE;gBACvC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACnD,CAAC;WAAC;QAEO;;;;mBAA2C,KAAK,IAAI,EAAE;gBAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAC5B,CAAC;WAAC;QA9BA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IA+BD,MAAM,CAAC,uBAAuB,CAC5B,GAAW;QAEX,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,yBAAyB,CAC9B,GAAQ;QAER,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;CACF","sourcesContent":["import { type SmartAccountSigner } from \"@alchemy/aa-core\";\nimport {\n isHex,\n type HDAccount,\n type Hash,\n type PrivateKeyAccount,\n type TypedData,\n type TypedDataDefinition,\n type Hex,\n} from \"viem\";\nimport { mnemonicToAccount, privateKeyToAccount } from \"viem/accounts\";\n\nexport class ZeroDevLocalAccountSigner<T extends HDAccount | PrivateKeyAccount>\n implements SmartAccountSigner\n{\n private owner: T;\n constructor(owner: T) {\n this.owner = owner;\n }\n\n readonly signMessage: (msg: string | Uint8Array) => Promise<`0x${string}`> = (\n msg\n ) => {\n if (typeof msg === \"string\" && !isHex(msg)) {\n return this.owner.signMessage({\n message: msg,\n });\n } else {\n return this.owner.signMessage({\n message: {\n raw: msg,\n },\n });\n }\n };\n\n readonly signTypedData: <\n TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string = string\n >(\n typedData: TypedDataDefinition<TTypedData, TPrimaryType>\n ) => Promise<Hash> = async (typedData) => {\n return await this.owner.signTypedData(typedData);\n };\n\n readonly getAddress: () => Promise<`0x${string}`> = async () => {\n return this.owner.address;\n };\n\n static mnemonicToAccountSigner(\n key: string\n ): ZeroDevLocalAccountSigner<HDAccount> {\n const owner = mnemonicToAccount(key);\n return new ZeroDevLocalAccountSigner(owner);\n }\n\n static privateKeyToAccountSigner(\n key: Hex\n ): ZeroDevLocalAccountSigner<PrivateKeyAccount> {\n const owner = privateKeyToAccount(key);\n return new ZeroDevLocalAccountSigner(owner);\n }\n}\n"]}
@@ -1,14 +0,0 @@
1
- import { type SmartAccountSigner } from "@alchemy/aa-core";
2
- import { type HDAccount, type Hash, type PrivateKeyAccount, type TypedData, type TypedDataDefinition, type Hex } from "viem";
3
- export declare class ZeroDevLocalAccountSigner<T extends HDAccount | PrivateKeyAccount> implements SmartAccountSigner {
4
- private owner;
5
- constructor(owner: T);
6
- readonly signMessage: (msg: string | Uint8Array) => Promise<`0x${string}`>;
7
- readonly signTypedData: <TTypedData extends TypedData | {
8
- [key: string]: unknown;
9
- }, TPrimaryType extends string = string>(typedData: TypedDataDefinition<TTypedData, TPrimaryType>) => Promise<Hash>;
10
- readonly getAddress: () => Promise<`0x${string}`>;
11
- static mnemonicToAccountSigner(key: string): ZeroDevLocalAccountSigner<HDAccount>;
12
- static privateKeyToAccountSigner(key: Hex): ZeroDevLocalAccountSigner<PrivateKeyAccount>;
13
- }
14
- //# sourceMappingURL=zd-local-account.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zd-local-account.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/signer/zd-local-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,GAAG,EACT,MAAM,MAAM,CAAC;AAGd,qBAAa,yBAAyB,CAAC,CAAC,SAAS,SAAS,GAAG,iBAAiB,CAC5E,YAAW,kBAAkB;IAE7B,OAAO,CAAC,KAAK,CAAI;gBACL,KAAK,EAAE,CAAC;IAIpB,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,KAAK,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAcxE;IAEF,QAAQ,CAAC,aAAa,EAAE,CACtB,UAAU,SAAS,SAAS,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EACzD,YAAY,SAAS,MAAM,GAAG,MAAM,EAEpC,SAAS,EAAE,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,KACrD,OAAO,CAAC,IAAI,CAAC,CAEhB;IAEF,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAE/C;IAEF,MAAM,CAAC,uBAAuB,CAC5B,GAAG,EAAE,MAAM,GACV,yBAAyB,CAAC,SAAS,CAAC;IAKvC,MAAM,CAAC,yBAAyB,CAC9B,GAAG,EAAE,GAAG,GACP,yBAAyB,CAAC,iBAAiB,CAAC;CAIhD"}
@@ -1,20 +0,0 @@
1
- import type { Address, Hex, SmartAccountSigner } from "@alchemy/aa-core";
2
-
3
- export class MockSignerValidator implements SmartAccountSigner {
4
- getAddress(): Promise<Address> {
5
- return Promise.resolve("0xabcfC3DB1e0f5023F5a4f40c03D149f316E6A5cc");
6
- }
7
-
8
- async signMessage(msg: Uint8Array | Hex | string): Promise<Hex> {
9
- switch (msg) {
10
- case "0xabcfC3DB1e0f5023F5a4f40c03D149f316E6A5cc":
11
- return "0x64e29e4786b3740ceffc2c1a932124ee74c29b552957ea3bde8913753d1763af4f03362e387d2badb33932e8fc4f7b3411a0a5ade32a5b708aa48c171632a6211b";
12
- case "icanbreakthistestcase":
13
- return "0xabd26de022c2785a7d86c5c388f4adef5d93358b39fbb757463bc9edc78b7b86566cb1ab8c7ff3a52b10d98de6398aacc7b48aec92a3e280065a47b9698209541b";
14
- case "0xbc7299170f076afcbafe11da04482e72e3beccabcd82de0cd2797500e81b76c4":
15
- return "0x6c21c7271c8403452c5a812c9ba776b33b12733953f154d36d989d379c92ec632b7a1997ca16203a7ef5fcd639bcaa3d5420b65e0774a8bca7fad6d1437024661c";
16
- default:
17
- throw new Error("Invalid message");
18
- }
19
- }
20
- }
@@ -1,63 +0,0 @@
1
- import { type SmartAccountSigner } from "@alchemy/aa-core";
2
- import {
3
- isHex,
4
- type HDAccount,
5
- type Hash,
6
- type PrivateKeyAccount,
7
- type TypedData,
8
- type TypedDataDefinition,
9
- type Hex,
10
- } from "viem";
11
- import { mnemonicToAccount, privateKeyToAccount } from "viem/accounts";
12
-
13
- export class ZeroDevLocalAccountSigner<T extends HDAccount | PrivateKeyAccount>
14
- implements SmartAccountSigner
15
- {
16
- private owner: T;
17
- constructor(owner: T) {
18
- this.owner = owner;
19
- }
20
-
21
- readonly signMessage: (msg: string | Uint8Array) => Promise<`0x${string}`> = (
22
- msg
23
- ) => {
24
- if (typeof msg === "string" && !isHex(msg)) {
25
- return this.owner.signMessage({
26
- message: msg,
27
- });
28
- } else {
29
- return this.owner.signMessage({
30
- message: {
31
- raw: msg,
32
- },
33
- });
34
- }
35
- };
36
-
37
- readonly signTypedData: <
38
- TTypedData extends TypedData | { [key: string]: unknown },
39
- TPrimaryType extends string = string
40
- >(
41
- typedData: TypedDataDefinition<TTypedData, TPrimaryType>
42
- ) => Promise<Hash> = async (typedData) => {
43
- return await this.owner.signTypedData(typedData);
44
- };
45
-
46
- readonly getAddress: () => Promise<`0x${string}`> = async () => {
47
- return this.owner.address;
48
- };
49
-
50
- static mnemonicToAccountSigner(
51
- key: string
52
- ): ZeroDevLocalAccountSigner<HDAccount> {
53
- const owner = mnemonicToAccount(key);
54
- return new ZeroDevLocalAccountSigner(owner);
55
- }
56
-
57
- static privateKeyToAccountSigner(
58
- key: Hex
59
- ): ZeroDevLocalAccountSigner<PrivateKeyAccount> {
60
- const owner = privateKeyToAccount(key);
61
- return new ZeroDevLocalAccountSigner(owner);
62
- }
63
- }