@alchemy/smart-accounts 5.0.0-beta.3 → 5.0.0-beta.5
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/esm/light-account/accounts/calldataCodec.js +0 -3
- package/dist/esm/light-account/accounts/calldataCodec.js.map +1 -1
- package/dist/esm/ma-v1/accounts/calldataCodec.js +0 -4
- package/dist/esm/ma-v1/accounts/calldataCodec.js.map +1 -1
- package/dist/esm/ma-v2/accounts/calldataCodec.js +0 -4
- package/dist/esm/ma-v2/accounts/calldataCodec.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/light-account/accounts/calldataCodec.d.ts.map +1 -1
- package/dist/types/ma-v1/accounts/calldataCodec.d.ts.map +1 -1
- package/dist/types/ma-v2/accounts/calldataCodec.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +4 -4
- package/src/light-account/accounts/calldataCodec.ts +0 -4
- package/src/ma-v1/accounts/calldataCodec.ts +0 -5
- package/src/ma-v2/accounts/calldataCodec.ts +0 -5
- package/src/version.ts +1 -1
|
@@ -11,9 +11,6 @@ import { BaseError } from "@alchemy/common";
|
|
|
11
11
|
* @returns {Hex} The encoded calldata.
|
|
12
12
|
*/
|
|
13
13
|
export function encodeCallsLA(calls) {
|
|
14
|
-
if (!calls.length) {
|
|
15
|
-
throw new BaseError("No calls to encode.");
|
|
16
|
-
}
|
|
17
14
|
if (calls.length === 1) {
|
|
18
15
|
return encodeFunctionData({
|
|
19
16
|
abi: LightAccountAbi_v1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calldataCodec.js","sourceRoot":"","sources":["../../../../src/light-account/accounts/calldataCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAInB,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,mHAAmH;AAEnH;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAsB;IAClD,IAAI,
|
|
1
|
+
{"version":3,"file":"calldataCodec.js","sourceRoot":"","sources":["../../../../src/light-account/accounts/calldataCodec.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n decodeFunctionData,\n encodeFunctionData,\n type Address,\n type Call,\n type Hex,\n} from \"viem\";\nimport { LightAccountAbi_v1 } from \"../abis/LightAccountAbi_v1.js\";\nimport { BaseError } from \"@alchemy/common\";\n\n// Conveniently, all variants of LA up to v2.0.0 use the same function signatures for `execute` and `executeBatch`.\n\n/**\n * Encodes an array of calls into LightAccount calldata for `execute` or `executeBatch`.\n * Used internally by the LightAccount SmartAccount implementation. Typically not needed\n * directly unless you have an advanced use case.\n *\n * @param {Call[]} calls The calls to encode.\n * @returns {Hex} The encoded calldata.\n */\nexport function encodeCallsLA(calls: readonly Call[]): Hex {\n if (calls.length === 1) {\n return encodeFunctionData({\n abi: LightAccountAbi_v1,\n functionName: \"execute\",\n args: [calls[0].to, calls[0].value ?? 0n, calls[0].data ?? \"0x\"],\n });\n }\n\n const [targets, values, datas, hasValue] = calls.reduce(\n (accum, curr) => {\n accum[0].push(curr.to);\n accum[1].push(curr.value ?? 0n);\n accum[2].push(curr.data ?? \"0x\");\n accum[3] = accum[3] || (curr.value ?? 0n) !== 0n;\n return accum;\n },\n [[], [], [], false] as [Address[], bigint[], Hex[], boolean],\n );\n\n return encodeFunctionData({\n abi: LightAccountAbi_v1,\n functionName: \"executeBatch\",\n args: hasValue ? [targets, values, datas] : [targets, datas],\n });\n}\n\n/**\n * Decodes LightAccount calldata back into an array of calls.\n * Used internally by the LightAccount SmartAccount implementation. Typically not needed\n * directly unless you have an advanced use case.\n *\n * @param {Hex} data The calldata to decode.\n * @param {Address} accountAddress The account address, used as the `to` for unrecognized selectors.\n * @returns {Call[]} The decoded calls.\n */\nexport function decodeCallsLA(data: Hex, accountAddress: Address): Call[] {\n const decoded = decodeFunctionData({\n abi: LightAccountAbi_v1,\n data,\n });\n\n if (decoded.functionName === \"execute\") {\n return [\n {\n to: decoded.args[0],\n data: decoded.args[2],\n ...(decoded.args[1] !== undefined ? { value: decoded.args[1] } : {}),\n },\n ];\n }\n\n if (decoded.functionName === \"executeBatch\") {\n // This function is overloaded - may or may not have an array for values.\n\n if (isThreeTupleArray(decoded.args)) {\n const [targets, values, datas] = decoded.args;\n\n if (targets.length !== values.length || targets.length !== datas.length) {\n throw new BaseError(\"Invalid arguments for executeBatch\");\n }\n\n return targets.map((to, index) => ({\n to,\n value: values[index],\n data: datas[index],\n }));\n }\n\n // Two tuple array (no values)\n const [targets, datas] = decoded.args;\n\n if (targets.length !== datas.length) {\n throw new BaseError(\"Invalid arguments for executeBatch\");\n }\n\n return targets.map((to, index) => ({\n to,\n data: datas[index],\n }));\n }\n\n // Otherwise, treat the call as a single call to the account itself.\n return [\n {\n to: accountAddress,\n data,\n },\n ];\n}\n\n// Needed to narrow types for LAv1 `executeBatch` function.\nfunction isThreeTupleArray(\n input:\n | readonly [readonly Address[], readonly Hex[]]\n | readonly [readonly Address[], readonly bigint[], readonly Hex[]],\n): input is readonly [readonly Address[], readonly bigint[], readonly Hex[]] {\n return input.length === 3;\n}\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { decodeFunctionData, encodeFunctionData, } from "viem";
|
|
2
2
|
import { IStandardExecutorAbi } from "../abis/IStandardExecutor.js";
|
|
3
|
-
import { BaseError } from "@alchemy/common";
|
|
4
3
|
/**
|
|
5
4
|
* Encodes an array of calls into ModularAccountV1 calldata for `execute` or `executeBatch`.
|
|
6
5
|
* Used internally by the ModularAccountV1 SmartAccount implementation. Typically not needed
|
|
@@ -10,9 +9,6 @@ import { BaseError } from "@alchemy/common";
|
|
|
10
9
|
* @returns {Hex} The encoded calldata.
|
|
11
10
|
*/
|
|
12
11
|
export function encodeCallsMAv1(calls) {
|
|
13
|
-
if (!calls.length) {
|
|
14
|
-
throw new BaseError("No calls to encode.");
|
|
15
|
-
}
|
|
16
12
|
if (calls.length === 1) {
|
|
17
13
|
return encodeFunctionData({
|
|
18
14
|
abi: IStandardExecutorAbi,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calldataCodec.js","sourceRoot":"","sources":["../../../../src/ma-v1/accounts/calldataCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAInB,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"calldataCodec.js","sourceRoot":"","sources":["../../../../src/ma-v1/accounts/calldataCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAInB,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAAsB;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAC;YACxB,GAAG,EAAE,oBAAoB;YACzB,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,kBAAkB,CAAC;QACxB,GAAG,EAAE,oBAAoB;QACzB,YAAY,EAAE,cAAc;QAC5B,IAAI,EAAE;YACJ,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACnB,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;aACxB,CAAC,CAAC;SACJ;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAS,EAAE,cAAuB;IAChE,MAAM,OAAO,GAAG,kBAAkB,CAAC;QACjC,GAAG,EAAE,oBAAoB;QACzB,IAAI;KACL,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO;YACL;gBACE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;aACtB;SACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,KAAK,cAAc,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpC,EAAE,EAAE,IAAI,CAAC,MAAM;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,+GAA+G;IAC/G,OAAO;QACL;YACE,EAAE,EAAE,cAAc;YAClB,IAAI;SACL;KACF,CAAC;AACJ,CAAC","sourcesContent":["import {\n decodeFunctionData,\n encodeFunctionData,\n type Address,\n type Call,\n type Hex,\n} from \"viem\";\nimport { IStandardExecutorAbi } from \"../abis/IStandardExecutor.js\";\n\n/**\n * Encodes an array of calls into ModularAccountV1 calldata for `execute` or `executeBatch`.\n * Used internally by the ModularAccountV1 SmartAccount implementation. Typically not needed\n * directly unless you have an advanced use case.\n *\n * @param {Call[]} calls The calls to encode.\n * @returns {Hex} The encoded calldata.\n */\nexport function encodeCallsMAv1(calls: readonly Call[]): Hex {\n if (calls.length === 1) {\n return encodeFunctionData({\n abi: IStandardExecutorAbi,\n functionName: \"execute\",\n args: [calls[0].to, calls[0].value ?? 0n, calls[0].data ?? \"0x\"],\n });\n }\n\n return encodeFunctionData({\n abi: IStandardExecutorAbi,\n functionName: \"executeBatch\",\n args: [\n calls.map((call) => ({\n target: call.to,\n value: call.value ?? 0n,\n data: call.data ?? \"0x\",\n })),\n ],\n });\n}\n\n/**\n * Decodes ModularAccountV1 calldata back into an array of calls.\n * Used internally by the ModularAccountV1 SmartAccount implementation. Typically not needed\n * directly unless you have an advanced use case.\n *\n * @param {Hex} data The calldata to decode.\n * @param {Address} accountAddress The account address, used as the `to` for unrecognized selectors.\n * @returns {Call[]} The decoded calls.\n */\nexport function decodeCallsMAv1(data: Hex, accountAddress: Address): Call[] {\n const decoded = decodeFunctionData({\n abi: IStandardExecutorAbi,\n data,\n });\n\n if (decoded.functionName === \"execute\") {\n return [\n {\n to: decoded.args[0],\n value: decoded.args[1],\n data: decoded.args[2],\n },\n ];\n }\n\n if (decoded.functionName === \"executeBatch\") {\n return decoded.args[0].map((call) => ({\n to: call.target,\n value: call.value,\n data: call.data,\n }));\n }\n\n // If the data is not for an `execute` or `executeBatch` call, treat it as a single call to the account itself.\n return [\n {\n to: accountAddress,\n data,\n },\n ];\n}\n"]}
|
|
@@ -2,7 +2,6 @@ import { decodeFunctionData, encodeFunctionData, } from "viem";
|
|
|
2
2
|
import { sliceHex } from "viem/utils";
|
|
3
3
|
import { modularAccountAbi } from "../abis/modularAccountAbi.js";
|
|
4
4
|
import { EXECUTE_USER_OP_SELECTOR } from "../utils/account.js";
|
|
5
|
-
import { BaseError } from "@alchemy/common";
|
|
6
5
|
/**
|
|
7
6
|
* Encodes an array of calls into ModularAccountV2 calldata for `execute` or `executeBatch`.
|
|
8
7
|
* Used internally by the ModularAccountV2 SmartAccount implementation. Typically not needed
|
|
@@ -12,9 +11,6 @@ import { BaseError } from "@alchemy/common";
|
|
|
12
11
|
* @returns {Hex} The encoded calldata.
|
|
13
12
|
*/
|
|
14
13
|
export function encodeCallsMAv2(calls) {
|
|
15
|
-
if (!calls.length) {
|
|
16
|
-
throw new BaseError("No calls to encode.");
|
|
17
|
-
}
|
|
18
14
|
if (calls.length === 1) {
|
|
19
15
|
return encodeFunctionData({
|
|
20
16
|
abi: modularAccountAbi,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calldataCodec.js","sourceRoot":"","sources":["../../../../src/ma-v2/accounts/calldataCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAInB,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"calldataCodec.js","sourceRoot":"","sources":["../../../../src/ma-v2/accounts/calldataCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAInB,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAAsB;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAC;YACxB,GAAG,EAAE,iBAAiB;YACtB,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,kBAAkB,CAAC;QACxB,GAAG,EAAE,iBAAiB;QACtB,YAAY,EAAE,cAAc;QAC5B,IAAI,EAAE;YACJ,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACnB,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;aACxB,CAAC,CAAC;SACJ;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAS,EAAE,cAAuB;IAChE,wDAAwD;IACxD,MAAM,WAAW,GAAG,IAAI;SACrB,WAAW,EAAE;SACb,UAAU,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;QACnD,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACnB,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,OAAO,GAAG,kBAAkB,CAAC;QACjC,GAAG,EAAE,iBAAiB;QACtB,IAAI,EAAE,WAAW;KAClB,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO;YACL;gBACE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;aACtB;SACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,KAAK,cAAc,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpC,EAAE,EAAE,IAAI,CAAC,MAAM;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,+GAA+G;IAC/G,OAAO;QACL;YACE,EAAE,EAAE,cAAc;YAClB,IAAI;SACL;KACF,CAAC;AACJ,CAAC","sourcesContent":["import {\n decodeFunctionData,\n encodeFunctionData,\n type Address,\n type Call,\n type Hex,\n} from \"viem\";\nimport { sliceHex } from \"viem/utils\";\nimport { modularAccountAbi } from \"../abis/modularAccountAbi.js\";\nimport { EXECUTE_USER_OP_SELECTOR } from \"../utils/account.js\";\n\n/**\n * Encodes an array of calls into ModularAccountV2 calldata for `execute` or `executeBatch`.\n * Used internally by the ModularAccountV2 SmartAccount implementation. Typically not needed\n * directly unless you have an advanced use case.\n *\n * @param {Call[]} calls The calls to encode.\n * @returns {Hex} The encoded calldata.\n */\nexport function encodeCallsMAv2(calls: readonly Call[]): Hex {\n if (calls.length === 1) {\n return encodeFunctionData({\n abi: modularAccountAbi,\n functionName: \"execute\",\n args: [calls[0].to, calls[0].value ?? 0n, calls[0].data ?? \"0x\"],\n });\n }\n\n return encodeFunctionData({\n abi: modularAccountAbi,\n functionName: \"executeBatch\",\n args: [\n calls.map((call) => ({\n target: call.to,\n data: call.data ?? \"0x\",\n value: call.value ?? 0n,\n })),\n ],\n });\n}\n\n/**\n * Decodes ModularAccountV2 calldata back into an array of calls. Strips the `EXECUTE_USER_OP_SELECTOR` prefix if present.\n * Used internally by the ModularAccountV2 SmartAccount implementation. Typically not needed\n * directly unless you have an advanced use case.\n *\n * @param {Hex} data The calldata to decode.\n * @param {Address} accountAddress The account address, used as the `to` for unrecognized selectors.\n * @returns {Call[]} The decoded calls.\n */\nexport function decodeCallsMAv2(data: Hex, accountAddress: Address): Call[] {\n // Strip the EXECUTE_USER_OP_SELECTOR prefix if present.\n const trimmedData = data\n .toLowerCase()\n .startsWith(EXECUTE_USER_OP_SELECTOR.toLowerCase())\n ? sliceHex(data, 4)\n : data;\n\n const decoded = decodeFunctionData({\n abi: modularAccountAbi,\n data: trimmedData,\n });\n\n if (decoded.functionName === \"execute\") {\n return [\n {\n to: decoded.args[0],\n value: decoded.args[1],\n data: decoded.args[2],\n },\n ];\n }\n\n if (decoded.functionName === \"executeBatch\") {\n return decoded.args[0].map((call) => ({\n to: call.target,\n value: call.value,\n data: call.data,\n }));\n }\n\n // If the data is not for an `execute` or `executeBatch` call, treat it as a single call to the account itself.\n return [\n {\n to: accountAddress,\n data,\n },\n ];\n}\n"]}
|
package/dist/esm/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "5.0.0-beta.
|
|
1
|
+
export declare const VERSION = "5.0.0-beta.4";
|
package/dist/esm/version.js
CHANGED
package/dist/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yBAAyB;AACzB,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC","sourcesContent":["// This file is autogenerated by inject-version.ts. Any changes will be\n// overwritten on commit!\nexport const VERSION = \"5.0.0-beta.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yBAAyB;AACzB,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC","sourcesContent":["// This file is autogenerated by inject-version.ts. Any changes will be\n// overwritten on commit!\nexport const VERSION = \"5.0.0-beta.4\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calldataCodec.d.ts","sourceRoot":"","sources":["../../../../src/light-account/accounts/calldataCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,GAAG,EACT,MAAM,MAAM,CAAC;AAMd;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"calldataCodec.d.ts","sourceRoot":"","sources":["../../../../src/light-account/accounts/calldataCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,GAAG,EACT,MAAM,MAAM,CAAC;AAMd;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,GAAG,CAyBzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI,EAAE,CAqDxE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calldataCodec.d.ts","sourceRoot":"","sources":["../../../../src/ma-v1/accounts/calldataCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,GAAG,EACT,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"calldataCodec.d.ts","sourceRoot":"","sources":["../../../../src/ma-v1/accounts/calldataCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,GAAG,EACT,MAAM,MAAM,CAAC;AAGd;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,GAAG,CAoB3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI,EAAE,CA+B1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calldataCodec.d.ts","sourceRoot":"","sources":["../../../../src/ma-v2/accounts/calldataCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,GAAG,EACT,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"calldataCodec.d.ts","sourceRoot":"","sources":["../../../../src/ma-v2/accounts/calldataCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,GAAG,EACT,MAAM,MAAM,CAAC;AAKd;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,GAAG,CAoB3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI,EAAE,CAsC1E"}
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "5.0.0-beta.
|
|
1
|
+
export declare const VERSION = "5.0.0-beta.4";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alchemy/smart-accounts",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.5",
|
|
4
4
|
"description": "This package contains all of the viem interfaces for Alchemy's Smart Contract Accounts",
|
|
5
5
|
"author": "Alchemy",
|
|
6
6
|
"license": "MIT",
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
"test:run": "vitest run"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@alchemy/aa-infra": "^5.0.0-beta.
|
|
42
|
+
"@alchemy/aa-infra": "^5.0.0-beta.5",
|
|
43
43
|
"typescript-template": "*",
|
|
44
44
|
"viem": "^2.45.0"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@alchemy/common": "^5.0.0-beta.
|
|
47
|
+
"@alchemy/common": "^5.0.0-beta.5"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"viem": "^2.45.0"
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"url": "https://github.com/alchemyplatform/aa-sdk/issues"
|
|
62
62
|
},
|
|
63
63
|
"homepage": "https://github.com/alchemyplatform/aa-sdk#readme",
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "7bd9dad22e4604d76a7cded8abea8fef859cee73"
|
|
65
65
|
}
|
|
@@ -19,10 +19,6 @@ import { BaseError } from "@alchemy/common";
|
|
|
19
19
|
* @returns {Hex} The encoded calldata.
|
|
20
20
|
*/
|
|
21
21
|
export function encodeCallsLA(calls: readonly Call[]): Hex {
|
|
22
|
-
if (!calls.length) {
|
|
23
|
-
throw new BaseError("No calls to encode.");
|
|
24
|
-
}
|
|
25
|
-
|
|
26
22
|
if (calls.length === 1) {
|
|
27
23
|
return encodeFunctionData({
|
|
28
24
|
abi: LightAccountAbi_v1,
|
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
type Hex,
|
|
7
7
|
} from "viem";
|
|
8
8
|
import { IStandardExecutorAbi } from "../abis/IStandardExecutor.js";
|
|
9
|
-
import { BaseError } from "@alchemy/common";
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* Encodes an array of calls into ModularAccountV1 calldata for `execute` or `executeBatch`.
|
|
@@ -17,10 +16,6 @@ import { BaseError } from "@alchemy/common";
|
|
|
17
16
|
* @returns {Hex} The encoded calldata.
|
|
18
17
|
*/
|
|
19
18
|
export function encodeCallsMAv1(calls: readonly Call[]): Hex {
|
|
20
|
-
if (!calls.length) {
|
|
21
|
-
throw new BaseError("No calls to encode.");
|
|
22
|
-
}
|
|
23
|
-
|
|
24
19
|
if (calls.length === 1) {
|
|
25
20
|
return encodeFunctionData({
|
|
26
21
|
abi: IStandardExecutorAbi,
|
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
import { sliceHex } from "viem/utils";
|
|
9
9
|
import { modularAccountAbi } from "../abis/modularAccountAbi.js";
|
|
10
10
|
import { EXECUTE_USER_OP_SELECTOR } from "../utils/account.js";
|
|
11
|
-
import { BaseError } from "@alchemy/common";
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Encodes an array of calls into ModularAccountV2 calldata for `execute` or `executeBatch`.
|
|
@@ -19,10 +18,6 @@ import { BaseError } from "@alchemy/common";
|
|
|
19
18
|
* @returns {Hex} The encoded calldata.
|
|
20
19
|
*/
|
|
21
20
|
export function encodeCallsMAv2(calls: readonly Call[]): Hex {
|
|
22
|
-
if (!calls.length) {
|
|
23
|
-
throw new BaseError("No calls to encode.");
|
|
24
|
-
}
|
|
25
|
-
|
|
26
21
|
if (calls.length === 1) {
|
|
27
22
|
return encodeFunctionData({
|
|
28
23
|
abi: modularAccountAbi,
|
package/src/version.ts
CHANGED