permissionless 0.2.8 → 0.2.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/_cjs/accounts/index.js +3 -1
  3. package/_cjs/accounts/index.js.map +1 -1
  4. package/_cjs/accounts/thirdweb/toThirdwebSmartAccount.js +118 -0
  5. package/_cjs/accounts/thirdweb/toThirdwebSmartAccount.js.map +1 -0
  6. package/_cjs/accounts/thirdweb/utils/encodeCallData.js +76 -0
  7. package/_cjs/accounts/thirdweb/utils/encodeCallData.js.map +1 -0
  8. package/_cjs/accounts/thirdweb/utils/getAccountAddress.js +37 -0
  9. package/_cjs/accounts/thirdweb/utils/getAccountAddress.js.map +1 -0
  10. package/_cjs/accounts/thirdweb/utils/getFactoryData.js +37 -0
  11. package/_cjs/accounts/thirdweb/utils/getFactoryData.js.map +1 -0
  12. package/_cjs/accounts/thirdweb/utils/signMessage.js +19 -0
  13. package/_cjs/accounts/thirdweb/utils/signMessage.js.map +1 -0
  14. package/_cjs/accounts/thirdweb/utils/signTypedData.js +40 -0
  15. package/_cjs/accounts/thirdweb/utils/signTypedData.js.map +1 -0
  16. package/_esm/accounts/index.js +2 -1
  17. package/_esm/accounts/index.js.map +1 -1
  18. package/_esm/accounts/thirdweb/toThirdwebSmartAccount.js +122 -0
  19. package/_esm/accounts/thirdweb/toThirdwebSmartAccount.js.map +1 -0
  20. package/_esm/accounts/thirdweb/utils/encodeCallData.js +72 -0
  21. package/_esm/accounts/thirdweb/utils/encodeCallData.js.map +1 -0
  22. package/_esm/accounts/thirdweb/utils/getAccountAddress.js +33 -0
  23. package/_esm/accounts/thirdweb/utils/getAccountAddress.js.map +1 -0
  24. package/_esm/accounts/thirdweb/utils/getFactoryData.js +33 -0
  25. package/_esm/accounts/thirdweb/utils/getFactoryData.js.map +1 -0
  26. package/_esm/accounts/thirdweb/utils/signMessage.js +17 -0
  27. package/_esm/accounts/thirdweb/utils/signMessage.js.map +1 -0
  28. package/_esm/accounts/thirdweb/utils/signTypedData.js +40 -0
  29. package/_esm/accounts/thirdweb/utils/signTypedData.js.map +1 -0
  30. package/_types/accounts/index.d.ts +2 -1
  31. package/_types/accounts/index.d.ts.map +1 -1
  32. package/_types/accounts/thirdweb/toThirdwebSmartAccount.d.ts +37 -0
  33. package/_types/accounts/thirdweb/toThirdwebSmartAccount.d.ts.map +1 -0
  34. package/_types/accounts/thirdweb/utils/encodeCallData.d.ts +6 -0
  35. package/_types/accounts/thirdweb/utils/encodeCallData.d.ts.map +1 -0
  36. package/_types/accounts/thirdweb/utils/getAccountAddress.d.ts +8 -0
  37. package/_types/accounts/thirdweb/utils/getAccountAddress.d.ts.map +1 -0
  38. package/_types/accounts/thirdweb/utils/getFactoryData.d.ts +6 -0
  39. package/_types/accounts/thirdweb/utils/getFactoryData.d.ts.map +1 -0
  40. package/_types/accounts/thirdweb/utils/signMessage.d.ts +8 -0
  41. package/_types/accounts/thirdweb/utils/signMessage.d.ts.map +1 -0
  42. package/_types/accounts/thirdweb/utils/signTypedData.d.ts +7 -0
  43. package/_types/accounts/thirdweb/utils/signTypedData.d.ts.map +1 -0
  44. package/accounts/index.ts +12 -1
  45. package/accounts/thirdweb/toThirdwebSmartAccount.ts +203 -0
  46. package/accounts/thirdweb/utils/encodeCallData.ts +81 -0
  47. package/accounts/thirdweb/utils/getAccountAddress.ts +48 -0
  48. package/accounts/thirdweb/utils/getFactoryData.ts +40 -0
  49. package/accounts/thirdweb/utils/signMessage.ts +34 -0
  50. package/accounts/thirdweb/utils/signTypedData.ts +67 -0
  51. package/package.json +2 -8
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # permissionless
2
2
 
3
+ ## 0.2.9
4
+
5
+ ### Patch Changes
6
+
7
+ - 0af2b590861915f806098b83c8f8159b33923bb7: Added support for thirdweb smart account
8
+
3
9
  ## 0.2.8
4
10
 
5
11
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toBiconomySmartAccount = exports.toEcdsaKernelSmartAccount = exports.toSafeSmartAccount = exports.toTrustSmartAccount = exports.toLightSmartAccount = exports.toSimpleSmartAccount = void 0;
3
+ exports.toThirdwebSmartAccount = exports.toBiconomySmartAccount = exports.toEcdsaKernelSmartAccount = exports.toSafeSmartAccount = exports.toTrustSmartAccount = exports.toLightSmartAccount = exports.toSimpleSmartAccount = void 0;
4
4
  const toSimpleSmartAccount_1 = require("./simple/toSimpleSmartAccount.js");
5
5
  Object.defineProperty(exports, "toSimpleSmartAccount", { enumerable: true, get: function () { return toSimpleSmartAccount_1.toSimpleSmartAccount; } });
6
6
  const toLightSmartAccount_1 = require("./light/toLightSmartAccount.js");
@@ -13,4 +13,6 @@ const toEcdsaKernelSmartAccount_1 = require("./kernel/toEcdsaKernelSmartAccount.
13
13
  Object.defineProperty(exports, "toEcdsaKernelSmartAccount", { enumerable: true, get: function () { return toEcdsaKernelSmartAccount_1.toEcdsaKernelSmartAccount; } });
14
14
  const toBiconomySmartAccount_1 = require("./biconomy/toBiconomySmartAccount.js");
15
15
  Object.defineProperty(exports, "toBiconomySmartAccount", { enumerable: true, get: function () { return toBiconomySmartAccount_1.toBiconomySmartAccount; } });
16
+ const toThirdwebSmartAccount_1 = require("./thirdweb/toThirdwebSmartAccount.js");
17
+ Object.defineProperty(exports, "toThirdwebSmartAccount", { enumerable: true, get: function () { return toThirdwebSmartAccount_1.toThirdwebSmartAccount; } });
16
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":";;;AAAA,wEAKsC;AA4ClC,qGA7CA,2CAAoB,OA6CA;AA1CxB,qEAMoC;AAyChC,oGA1CA,yCAAmB,OA0CA;AAvCvB,qEAKoC;AAsChC,oGAvCA,yCAAmB,OAuCA;AApCvB,kEAMkC;AAkC9B,mGAnCA,uCAAkB,OAmCA;AAhCtB,kFAM2C;AAgCvC,0GAjCA,qDAAyB,OAiCA;AA9B7B,8EAK0C;AA6BtC,uGA9BA,+CAAsB,OA8BA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":";;;AAAA,wEAKsC;AAmDlC,qGApDA,2CAAoB,OAoDA;AAjDxB,qEAMoC;AAgDhC,oGAjDA,yCAAmB,OAiDA;AA9CvB,qEAKoC;AA6ChC,oGA9CA,yCAAmB,OA8CA;AA3CvB,kEAMkC;AAyC9B,mGA1CA,uCAAkB,OA0CA;AAvCtB,kFAM2C;AAuCvC,0GAxCA,qDAAyB,OAwCA;AArC7B,8EAK0C;AAoCtC,uGArCA,+CAAsB,OAqCA;AAlC1B,8EAK0C;AAiCtC,uGAlCA,+CAAsB,OAkCA"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.THIRDWEB_ADDRESSES = void 0;
4
+ exports.toThirdwebSmartAccount = toThirdwebSmartAccount;
5
+ const actions_1 = require("viem/actions");
6
+ const getAccountNonce_1 = require("../../actions/public/getAccountNonce.js");
7
+ const account_abstraction_1 = require("viem/account-abstraction");
8
+ const utils_1 = require("viem/utils");
9
+ const toOwner_1 = require("../../utils/toOwner.js");
10
+ const encodeCallData_1 = require("./utils/encodeCallData.js");
11
+ const getAccountAddress_1 = require("./utils/getAccountAddress.js");
12
+ const getFactoryData_1 = require("./utils/getFactoryData.js");
13
+ const signMessage_1 = require("./utils/signMessage.js");
14
+ const signTypedData_1 = require("./utils/signTypedData.js");
15
+ exports.THIRDWEB_ADDRESSES = {
16
+ "0.6": {
17
+ factoryAddress: "0x85e23b94e7F5E9cC1fF78BCe78cfb15B81f0DF00"
18
+ },
19
+ "0.7": {
20
+ factoryAddress: "0x4be0ddfebca9a5a4a617dee4dece99e7c862dceb"
21
+ }
22
+ };
23
+ async function toThirdwebSmartAccount(parameters) {
24
+ const entryPoint = {
25
+ address: parameters.entryPoint?.address ?? account_abstraction_1.entryPoint07Address,
26
+ abi: (parameters.entryPoint?.version ?? "0.7") === "0.6"
27
+ ? account_abstraction_1.entryPoint06Abi
28
+ : account_abstraction_1.entryPoint07Abi,
29
+ version: parameters.entryPoint?.version ?? "0.7"
30
+ };
31
+ const { owner, client, salt, address, factoryAddress = exports.THIRDWEB_ADDRESSES[entryPoint.version].factoryAddress } = parameters;
32
+ const admin = await (0, toOwner_1.toOwner)({ owner });
33
+ let accountAddress = address;
34
+ let chainId;
35
+ const getMemoizedChainId = async () => {
36
+ if (chainId)
37
+ return chainId;
38
+ chainId = client.chain
39
+ ? client.chain.id
40
+ : await (0, utils_1.getAction)(client, actions_1.getChainId, "getChainId")({});
41
+ return chainId;
42
+ };
43
+ const getFactoryArgs = async () => {
44
+ return {
45
+ factory: factoryAddress,
46
+ factoryData: await (0, getFactoryData_1.getFactoryData)({
47
+ admin: admin.address,
48
+ salt: salt ? (0, utils_1.toHex)(salt) : "0x"
49
+ })
50
+ };
51
+ };
52
+ return (0, account_abstraction_1.toSmartAccount)({
53
+ client,
54
+ entryPoint,
55
+ getFactoryArgs,
56
+ async getAddress() {
57
+ if (accountAddress)
58
+ return accountAddress;
59
+ accountAddress = await (0, getAccountAddress_1.getAccountAddress)(client, {
60
+ adminAddress: admin.address,
61
+ factoryAddress,
62
+ salt: salt ? (0, utils_1.toHex)(salt) : "0x"
63
+ });
64
+ return accountAddress;
65
+ },
66
+ async encodeCalls(calls) {
67
+ return (0, encodeCallData_1.encodeCallData)(calls);
68
+ },
69
+ async getNonce(args) {
70
+ return (0, getAccountNonce_1.getAccountNonce)(client, {
71
+ address: await this.getAddress(),
72
+ entryPointAddress: entryPoint.address,
73
+ key: parameters?.nonceKey ?? args?.key
74
+ });
75
+ },
76
+ async getStubSignature() {
77
+ return "0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c";
78
+ },
79
+ async sign({ hash }) {
80
+ return this.signMessage({ message: hash });
81
+ },
82
+ async signMessage({ message }) {
83
+ return (0, signMessage_1.signMessage)({
84
+ admin,
85
+ chainId: await getMemoizedChainId(),
86
+ accountAddress: await this.getAddress(),
87
+ message
88
+ });
89
+ },
90
+ async signTypedData(typedData) {
91
+ return (0, signTypedData_1.signTypedData)({
92
+ admin,
93
+ chainId: await getMemoizedChainId(),
94
+ accountAddress: await this.getAddress(),
95
+ ...typedData
96
+ });
97
+ },
98
+ async signUserOperation(parameters) {
99
+ const { chainId = await getMemoizedChainId(), ...userOperation } = parameters;
100
+ return admin.signMessage({
101
+ message: {
102
+ raw: (0, account_abstraction_1.getUserOperationHash)({
103
+ userOperation: {
104
+ ...userOperation,
105
+ sender: userOperation.sender ??
106
+ (await this.getAddress()),
107
+ signature: "0x"
108
+ },
109
+ entryPointAddress: entryPoint.address,
110
+ entryPointVersion: entryPoint.version,
111
+ chainId: chainId
112
+ })
113
+ }
114
+ });
115
+ }
116
+ });
117
+ }
118
+ //# sourceMappingURL=toThirdwebSmartAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toThirdwebSmartAccount.js","sourceRoot":"","sources":["../../../accounts/thirdweb/toThirdwebSmartAccount.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeCallData = void 0;
4
+ const viem_1 = require("viem");
5
+ const encodeCallData = async (calls) => {
6
+ if (calls.length > 1) {
7
+ return (0, viem_1.encodeFunctionData)({
8
+ abi: [
9
+ {
10
+ inputs: [
11
+ {
12
+ internalType: "address[]",
13
+ name: "dest",
14
+ type: "address[]"
15
+ },
16
+ {
17
+ internalType: "uint256[]",
18
+ name: "value",
19
+ type: "uint256[]"
20
+ },
21
+ {
22
+ internalType: "bytes[]",
23
+ name: "func",
24
+ type: "bytes[]"
25
+ }
26
+ ],
27
+ name: "executeBatch",
28
+ outputs: [],
29
+ stateMutability: "nonpayable",
30
+ type: "function"
31
+ }
32
+ ],
33
+ functionName: "executeBatch",
34
+ args: [
35
+ calls.map((a) => a.to),
36
+ calls.map((a) => a.value ?? 0n),
37
+ calls.map((a) => a.data ?? "0x")
38
+ ]
39
+ });
40
+ }
41
+ const call = calls.length === 0 ? undefined : calls[0];
42
+ if (!call) {
43
+ throw new Error("No calls to encode");
44
+ }
45
+ return (0, viem_1.encodeFunctionData)({
46
+ abi: [
47
+ {
48
+ inputs: [
49
+ {
50
+ internalType: "address",
51
+ name: "dest",
52
+ type: "address"
53
+ },
54
+ {
55
+ internalType: "uint256",
56
+ name: "value",
57
+ type: "uint256"
58
+ },
59
+ {
60
+ internalType: "bytes",
61
+ name: "func",
62
+ type: "bytes"
63
+ }
64
+ ],
65
+ name: "execute",
66
+ outputs: [],
67
+ stateMutability: "nonpayable",
68
+ type: "function"
69
+ }
70
+ ],
71
+ functionName: "execute",
72
+ args: [call.to, call.value ?? 0n, call.data ?? "0x"]
73
+ });
74
+ };
75
+ exports.encodeCallData = encodeCallData;
76
+ //# sourceMappingURL=encodeCallData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encodeCallData.js","sourceRoot":"","sources":["../../../../accounts/thirdweb/utils/encodeCallData.ts"],"names":[],"mappings":";;;AAAA,+BAAyC;AAElC,MAAM,cAAc,GAAG,KAAK,EAC/B,KAIG,EACL,EAAE;IACA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,IAAA,yBAAkB,EAAC;YACtB,GAAG,EAAE;gBACD;oBACI,MAAM,EAAE;wBACJ;4BACI,YAAY,EAAE,WAAW;4BACzB,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,WAAW;yBACpB;wBACD;4BACI,YAAY,EAAE,WAAW;4BACzB,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,WAAW;yBACpB;wBACD;4BACI,YAAY,EAAE,SAAS;4BACvB,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,SAAS;yBAClB;qBACJ;oBACD,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,EAAE;oBACX,eAAe,EAAE,YAAY;oBAC7B,IAAI,EAAE,UAAU;iBACnB;aACJ;YACD,YAAY,EAAE,cAAc;YAC5B,IAAI,EAAE;gBACF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;aACnC;SACJ,CAAC,CAAA;IACN,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAEtD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACzC,CAAC;IAED,OAAO,IAAA,yBAAkB,EAAC;QACtB,GAAG,EAAE;YACD;gBACI,MAAM,EAAE;oBACJ;wBACI,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,SAAS;qBAClB;oBACD;wBACI,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,SAAS;qBAClB;oBACD;wBACI,YAAY,EAAE,OAAO;wBACrB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,OAAO;qBAChB;iBACJ;gBACD,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,EAAE;gBACX,eAAe,EAAE,YAAY;gBAC7B,IAAI,EAAE,UAAU;aACnB;SACJ;QACD,YAAY,EAAE,SAAS;QACvB,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;KACvD,CAAC,CAAA;AACN,CAAC,CAAA;AA9EY,QAAA,cAAc,kBA8E1B"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAccountAddress = void 0;
4
+ const actions_1 = require("viem/actions");
5
+ const utils_1 = require("viem/utils");
6
+ const getAccountAddress = async (client, args) => {
7
+ const { adminAddress, factoryAddress, salt } = args;
8
+ return (0, utils_1.getAction)(client, actions_1.readContract, "readContract")({
9
+ address: factoryAddress,
10
+ abi: [
11
+ {
12
+ inputs: [
13
+ {
14
+ name: "_adminSigner",
15
+ type: "address"
16
+ },
17
+ {
18
+ name: "_data",
19
+ type: "bytes"
20
+ }
21
+ ],
22
+ name: "getAddress",
23
+ outputs: [
24
+ {
25
+ type: "address"
26
+ }
27
+ ],
28
+ stateMutability: "view",
29
+ type: "function"
30
+ }
31
+ ],
32
+ functionName: "getAddress",
33
+ args: [adminAddress, salt]
34
+ });
35
+ };
36
+ exports.getAccountAddress = getAccountAddress;
37
+ //# sourceMappingURL=getAccountAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAccountAddress.js","sourceRoot":"","sources":["../../../../accounts/thirdweb/utils/getAccountAddress.ts"],"names":[],"mappings":";;;AACA,0CAA2C;AAC3C,sCAAsC;AAQ/B,MAAM,iBAAiB,GAAG,KAAK,EAClC,MAAc,EACd,IAA6B,EACb,EAAE;IAClB,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;IAEnD,OAAO,IAAA,iBAAS,EACZ,MAAM,EACN,sBAAY,EACZ,cAAc,CACjB,CAAC;QACE,OAAO,EAAE,cAAc;QACvB,GAAG,EAAE;YACD;gBACI,MAAM,EAAE;oBACJ;wBACI,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,SAAS;qBAClB;oBACD;wBACI,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,OAAO;qBAChB;iBACJ;gBACD,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,SAAS;qBAClB;iBACJ;gBACD,eAAe,EAAE,MAAM;gBACvB,IAAI,EAAE,UAAU;aACnB;SACJ;QACD,YAAY,EAAE,YAAY;QAC1B,IAAI,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;KAC7B,CAAC,CAAA;AACN,CAAC,CAAA;AArCY,QAAA,iBAAiB,qBAqC7B"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFactoryData = void 0;
4
+ const viem_1 = require("viem");
5
+ const getFactoryData = async ({ admin, salt }) => {
6
+ return (0, viem_1.encodeFunctionData)({
7
+ abi: [
8
+ {
9
+ inputs: [
10
+ {
11
+ internalType: "address",
12
+ name: "_admin",
13
+ type: "address"
14
+ },
15
+ {
16
+ internalType: "bytes",
17
+ name: "_salt",
18
+ type: "bytes"
19
+ }
20
+ ],
21
+ name: "createAccount",
22
+ outputs: [
23
+ {
24
+ internalType: "address",
25
+ type: "address"
26
+ }
27
+ ],
28
+ stateMutability: "nonpayable",
29
+ type: "function"
30
+ }
31
+ ],
32
+ functionName: "createAccount",
33
+ args: [admin, salt]
34
+ });
35
+ };
36
+ exports.getFactoryData = getFactoryData;
37
+ //# sourceMappingURL=getFactoryData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFactoryData.js","sourceRoot":"","sources":["../../../../accounts/thirdweb/utils/getFactoryData.ts"],"names":[],"mappings":";;;AACA,+BAAyC;AAElC,MAAM,cAAc,GAAG,KAAK,EAAE,EACjC,KAAK,EACL,IAAI,EAIP,EAAE,EAAE;IACD,OAAO,IAAA,yBAAkB,EAAC;QACtB,GAAG,EAAE;YACD;gBACI,MAAM,EAAE;oBACJ;wBACI,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,SAAS;qBAClB;oBACD;wBACI,YAAY,EAAE,OAAO;wBACrB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,OAAO;qBAChB;iBACJ;gBACD,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE;oBACL;wBACI,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,SAAS;qBAClB;iBACJ;gBACD,eAAe,EAAE,YAAY;gBAC7B,IAAI,EAAE,UAAU;aACnB;SACJ;QACD,YAAY,EAAE,eAAe;QAC7B,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;KACtB,CAAC,CAAA;AACN,CAAC,CAAA;AApCY,QAAA,cAAc,kBAoC1B"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signMessage = signMessage;
4
+ const viem_1 = require("viem");
5
+ async function signMessage({ message, admin, accountAddress, chainId }) {
6
+ const hashedMessage = (0, viem_1.hashMessage)(message);
7
+ return admin.signTypedData({
8
+ domain: {
9
+ name: "Account",
10
+ version: "1",
11
+ chainId,
12
+ verifyingContract: accountAddress
13
+ },
14
+ primaryType: "AccountMessage",
15
+ types: { AccountMessage: [{ name: "message", type: "bytes" }] },
16
+ message: { message: hashedMessage }
17
+ });
18
+ }
19
+ //# sourceMappingURL=signMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signMessage.js","sourceRoot":"","sources":["../../../../accounts/thirdweb/utils/signMessage.ts"],"names":[],"mappings":";;AASA,kCAwBC;AAjCD,+BAMa;AAGN,KAAK,UAAU,WAAW,CAAC,EAC9B,OAAO,EACP,KAAK,EACL,cAAc,EACd,OAAO,EAMV;IACG,MAAM,aAAa,GAAG,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAA;IAE1C,OAAO,KAAK,CAAC,aAAa,CAAC;QACvB,MAAM,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,GAAG;YACZ,OAAO;YACP,iBAAiB,EAAE,cAAc;SACpC;QACD,WAAW,EAAE,gBAAgB;QAC7B,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;QAC/D,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;KACtC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signTypedData = signTypedData;
4
+ const viem_1 = require("viem");
5
+ async function signTypedData(parameters) {
6
+ const { admin, accountAddress, chainId, ...typedData } = parameters;
7
+ const isSelfVerifyingContract = typedData.domain?.verifyingContract?.toLowerCase() === accountAddress;
8
+ if (isSelfVerifyingContract) {
9
+ return admin.signTypedData({
10
+ ...typedData
11
+ });
12
+ }
13
+ const { message, primaryType, types: _types, domain } = typedData;
14
+ const types = {
15
+ EIP712Domain: (0, viem_1.getTypesForEIP712Domain)({
16
+ domain: domain
17
+ }),
18
+ ..._types
19
+ };
20
+ (0, viem_1.validateTypedData)({
21
+ domain,
22
+ message,
23
+ primaryType,
24
+ types
25
+ });
26
+ const typedHash = (0, viem_1.hashTypedData)({ message, primaryType, types, domain });
27
+ const wrappedMessageHash = (0, viem_1.encodeAbiParameters)([{ type: "bytes32" }], [typedHash]);
28
+ return admin.signTypedData({
29
+ domain: {
30
+ name: "Account",
31
+ version: "1",
32
+ chainId,
33
+ verifyingContract: accountAddress
34
+ },
35
+ primaryType: "AccountMessage",
36
+ types: { AccountMessage: [{ name: "message", type: "bytes" }] },
37
+ message: { message: wrappedMessageHash }
38
+ });
39
+ }
40
+ //# sourceMappingURL=signTypedData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signTypedData.js","sourceRoot":"","sources":["../../../../accounts/thirdweb/utils/signTypedData.ts"],"names":[],"mappings":";;AAYA,sCAsDC;AAlED,+BAUa;AAEN,KAAK,UAAU,aAAa,CAC/B,UAIC;IAED,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,UAAU,CAAA;IACnE,MAAM,uBAAuB,GAErB,SAAS,CAAC,MACb,EAAE,iBAAiB,EAAE,WAAW,EAAE,KAAK,cAAc,CAAA;IAG1D,IAAI,uBAAuB,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,aAAa,CAAC;YACvB,GAAG,SAAS;SACf,CAAC,CAAA;IACN,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACjE,MAAM,KAAK,GAAG;QACV,YAAY,EAAE,IAAA,8BAAuB,EAAC;YAClC,MAAM,EAAE,MAAM;SACjB,CAAC;QACF,GAAG,MAAM;KACZ,CAAA;IAID,IAAA,wBAAiB,EAAC;QACd,MAAM;QACN,OAAO;QACP,WAAW;QACX,KAAK;KACR,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,IAAA,oBAAa,EAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACxE,MAAM,kBAAkB,GAAG,IAAA,0BAAmB,EAC1C,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EACrB,CAAC,SAAS,CAAC,CACd,CAAA;IAED,OAAO,KAAK,CAAC,aAAa,CAAC;QACvB,MAAM,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,GAAG;YACZ,OAAO;YACP,iBAAiB,EAAE,cAAc;SACpC;QACD,WAAW,EAAE,gBAAgB;QAC7B,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;QAC/D,OAAO,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;KAC3C,CAAC,CAAA;AACN,CAAC"}
@@ -4,5 +4,6 @@ import { toTrustSmartAccount } from "./trust/toTrustSmartAccount.js";
4
4
  import { toSafeSmartAccount } from "./safe/toSafeSmartAccount.js";
5
5
  import { toEcdsaKernelSmartAccount } from "./kernel/toEcdsaKernelSmartAccount.js";
6
6
  import { toBiconomySmartAccount } from "./biconomy/toBiconomySmartAccount.js";
7
- export { toSimpleSmartAccount, toLightSmartAccount, toTrustSmartAccount, toSafeSmartAccount, toEcdsaKernelSmartAccount, toBiconomySmartAccount };
7
+ import { toThirdwebSmartAccount } from "./thirdweb/toThirdwebSmartAccount.js";
8
+ export { toSimpleSmartAccount, toLightSmartAccount, toTrustSmartAccount, toSafeSmartAccount, toEcdsaKernelSmartAccount, toBiconomySmartAccount, toThirdwebSmartAccount };
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,oBAAoB,EACvB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAKH,mBAAmB,EACtB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAIH,mBAAmB,EACtB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAKH,kBAAkB,EACrB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAKH,yBAAyB,EAC5B,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAIH,sBAAsB,EACzB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EAIH,oBAAoB,EAKpB,mBAAmB,EAInB,mBAAmB,EAInB,kBAAkB,EAMlB,yBAAyB,EAIzB,sBAAsB,EACzB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,oBAAoB,EACvB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAKH,mBAAmB,EACtB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAIH,mBAAmB,EACtB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAKH,kBAAkB,EACrB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAKH,yBAAyB,EAC5B,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAIH,sBAAsB,EACzB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EAIH,sBAAsB,EACzB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EAIH,oBAAoB,EAKpB,mBAAmB,EAInB,mBAAmB,EAInB,kBAAkB,EAMlB,yBAAyB,EAIzB,sBAAsB,EAItB,sBAAsB,EACzB,CAAA"}
@@ -0,0 +1,122 @@
1
+ import { getChainId } from "viem/actions";
2
+ import { getAccountNonce } from "../../actions/public/getAccountNonce.js";
3
+ import { entryPoint06Abi, entryPoint07Abi, entryPoint07Address, getUserOperationHash, toSmartAccount } from "viem/account-abstraction";
4
+ import { getAction, toHex } from "viem/utils";
5
+ import { toOwner } from "../../utils/toOwner.js";
6
+ import { encodeCallData } from "./utils/encodeCallData.js";
7
+ import { getAccountAddress } from "./utils/getAccountAddress.js";
8
+ import { getFactoryData } from "./utils/getFactoryData.js";
9
+ import { signMessage } from "./utils/signMessage.js";
10
+ import { signTypedData } from "./utils/signTypedData.js";
11
+ /**
12
+ * Default addresses for Thirdweb Smart Account
13
+ */
14
+ export const THIRDWEB_ADDRESSES = {
15
+ "0.6": {
16
+ factoryAddress: "0x85e23b94e7F5E9cC1fF78BCe78cfb15B81f0DF00"
17
+ },
18
+ "0.7": {
19
+ factoryAddress: "0x4be0ddfebca9a5a4a617dee4dece99e7c862dceb"
20
+ }
21
+ };
22
+ /**
23
+ * @description Creates a Thirdweb Smart Account from a private key.
24
+ *
25
+ * @returns A Private Key Thirdweb Smart Account.
26
+ */
27
+ export async function toThirdwebSmartAccount(parameters) {
28
+ const entryPoint = {
29
+ address: parameters.entryPoint?.address ?? entryPoint07Address,
30
+ abi: (parameters.entryPoint?.version ?? "0.7") === "0.6"
31
+ ? entryPoint06Abi
32
+ : entryPoint07Abi,
33
+ version: parameters.entryPoint?.version ?? "0.7"
34
+ };
35
+ const { owner, client, salt, address, factoryAddress = THIRDWEB_ADDRESSES[entryPoint.version].factoryAddress } = parameters;
36
+ const admin = await toOwner({ owner });
37
+ let accountAddress = address;
38
+ let chainId;
39
+ const getMemoizedChainId = async () => {
40
+ if (chainId)
41
+ return chainId;
42
+ chainId = client.chain
43
+ ? client.chain.id
44
+ : await getAction(client, getChainId, "getChainId")({});
45
+ return chainId;
46
+ };
47
+ const getFactoryArgs = async () => {
48
+ return {
49
+ factory: factoryAddress,
50
+ factoryData: await getFactoryData({
51
+ admin: admin.address,
52
+ salt: salt ? toHex(salt) : "0x"
53
+ })
54
+ };
55
+ };
56
+ return toSmartAccount({
57
+ client,
58
+ entryPoint,
59
+ getFactoryArgs,
60
+ async getAddress() {
61
+ if (accountAddress)
62
+ return accountAddress;
63
+ accountAddress = await getAccountAddress(client, {
64
+ adminAddress: admin.address,
65
+ factoryAddress,
66
+ salt: salt ? toHex(salt) : "0x"
67
+ });
68
+ return accountAddress;
69
+ },
70
+ async encodeCalls(calls) {
71
+ return encodeCallData(calls);
72
+ },
73
+ async getNonce(args) {
74
+ return getAccountNonce(client, {
75
+ address: await this.getAddress(),
76
+ entryPointAddress: entryPoint.address,
77
+ key: parameters?.nonceKey ?? args?.key
78
+ });
79
+ },
80
+ async getStubSignature() {
81
+ return "0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c";
82
+ },
83
+ async sign({ hash }) {
84
+ return this.signMessage({ message: hash });
85
+ },
86
+ async signMessage({ message }) {
87
+ return signMessage({
88
+ admin,
89
+ chainId: await getMemoizedChainId(),
90
+ accountAddress: await this.getAddress(),
91
+ message
92
+ });
93
+ },
94
+ async signTypedData(typedData) {
95
+ return signTypedData({
96
+ admin,
97
+ chainId: await getMemoizedChainId(),
98
+ accountAddress: await this.getAddress(),
99
+ ...typedData
100
+ });
101
+ },
102
+ async signUserOperation(parameters) {
103
+ const { chainId = await getMemoizedChainId(), ...userOperation } = parameters;
104
+ return admin.signMessage({
105
+ message: {
106
+ raw: getUserOperationHash({
107
+ userOperation: {
108
+ ...userOperation,
109
+ sender: userOperation.sender ??
110
+ (await this.getAddress()),
111
+ signature: "0x"
112
+ },
113
+ entryPointAddress: entryPoint.address,
114
+ entryPointVersion: entryPoint.version,
115
+ chainId: chainId
116
+ })
117
+ }
118
+ });
119
+ }
120
+ });
121
+ }
122
+ //# sourceMappingURL=toThirdwebSmartAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toThirdwebSmartAccount.js","sourceRoot":"","sources":["../../../accounts/thirdweb/toThirdwebSmartAccount.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { encodeFunctionData } from "viem";
2
+ export const encodeCallData = async (calls) => {
3
+ if (calls.length > 1) {
4
+ return encodeFunctionData({
5
+ abi: [
6
+ {
7
+ inputs: [
8
+ {
9
+ internalType: "address[]",
10
+ name: "dest",
11
+ type: "address[]"
12
+ },
13
+ {
14
+ internalType: "uint256[]",
15
+ name: "value",
16
+ type: "uint256[]"
17
+ },
18
+ {
19
+ internalType: "bytes[]",
20
+ name: "func",
21
+ type: "bytes[]"
22
+ }
23
+ ],
24
+ name: "executeBatch",
25
+ outputs: [],
26
+ stateMutability: "nonpayable",
27
+ type: "function"
28
+ }
29
+ ],
30
+ functionName: "executeBatch",
31
+ args: [
32
+ calls.map((a) => a.to),
33
+ calls.map((a) => a.value ?? 0n),
34
+ calls.map((a) => a.data ?? "0x")
35
+ ]
36
+ });
37
+ }
38
+ const call = calls.length === 0 ? undefined : calls[0];
39
+ if (!call) {
40
+ throw new Error("No calls to encode");
41
+ }
42
+ return encodeFunctionData({
43
+ abi: [
44
+ {
45
+ inputs: [
46
+ {
47
+ internalType: "address",
48
+ name: "dest",
49
+ type: "address"
50
+ },
51
+ {
52
+ internalType: "uint256",
53
+ name: "value",
54
+ type: "uint256"
55
+ },
56
+ {
57
+ internalType: "bytes",
58
+ name: "func",
59
+ type: "bytes"
60
+ }
61
+ ],
62
+ name: "execute",
63
+ outputs: [],
64
+ stateMutability: "nonpayable",
65
+ type: "function"
66
+ }
67
+ ],
68
+ functionName: "execute",
69
+ args: [call.to, call.value ?? 0n, call.data ?? "0x"]
70
+ });
71
+ };
72
+ //# sourceMappingURL=encodeCallData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encodeCallData.js","sourceRoot":"","sources":["../../../../accounts/thirdweb/utils/encodeCallData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAC/B,KAIG,EACL,EAAE;IACA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,kBAAkB,CAAC;YACtB,GAAG,EAAE;gBACD;oBACI,MAAM,EAAE;wBACJ;4BACI,YAAY,EAAE,WAAW;4BACzB,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,WAAW;yBACpB;wBACD;4BACI,YAAY,EAAE,WAAW;4BACzB,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,WAAW;yBACpB;wBACD;4BACI,YAAY,EAAE,SAAS;4BACvB,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,SAAS;yBAClB;qBACJ;oBACD,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,EAAE;oBACX,eAAe,EAAE,YAAY;oBAC7B,IAAI,EAAE,UAAU;iBACnB;aACJ;YACD,YAAY,EAAE,cAAc;YAC5B,IAAI,EAAE;gBACF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;aACnC;SACJ,CAAC,CAAA;IACN,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAEtD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACzC,CAAC;IAED,OAAO,kBAAkB,CAAC;QACtB,GAAG,EAAE;YACD;gBACI,MAAM,EAAE;oBACJ;wBACI,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,SAAS;qBAClB;oBACD;wBACI,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,SAAS;qBAClB;oBACD;wBACI,YAAY,EAAE,OAAO;wBACrB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,OAAO;qBAChB;iBACJ;gBACD,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,EAAE;gBACX,eAAe,EAAE,YAAY;gBAC7B,IAAI,EAAE,UAAU;aACnB;SACJ;QACD,YAAY,EAAE,SAAS;QACvB,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;KACvD,CAAC,CAAA;AACN,CAAC,CAAA"}