@aa-sdk/core 4.12.0 → 4.13.0
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/account/smartContractAccount.d.ts +3 -1
- package/dist/esm/account/smartContractAccount.js +26 -24
- package/dist/esm/account/smartContractAccount.js.map +1 -1
- package/dist/esm/entrypoint/0.6.d.ts +1 -1
- package/dist/esm/entrypoint/0.7.d.ts +1 -1
- package/dist/esm/errors/client.d.ts +10 -0
- package/dist/esm/errors/client.js +17 -0
- package/dist/esm/errors/client.js.map +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/middleware/defaults/7702gasEstimator.d.ts +36 -0
- package/dist/esm/middleware/defaults/7702gasEstimator.js +62 -0
- package/dist/esm/middleware/defaults/7702gasEstimator.js.map +1 -0
- package/dist/esm/middleware/defaults/7702signer.d.ts +37 -0
- package/dist/esm/middleware/defaults/7702signer.js +86 -0
- package/dist/esm/middleware/defaults/7702signer.js.map +1 -0
- package/dist/esm/signer/local-account.d.ts +21 -0
- package/dist/esm/signer/local-account.js +22 -0
- package/dist/esm/signer/local-account.js.map +1 -1
- package/dist/esm/signer/types.d.ts +2 -0
- package/dist/esm/signer/types.js.map +1 -1
- package/dist/esm/types.d.ts +12 -2
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/types.d.ts +1 -0
- package/dist/esm/utils/types.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/account/smartContractAccount.d.ts +3 -1
- package/dist/types/account/smartContractAccount.d.ts.map +1 -1
- package/dist/types/entrypoint/0.6.d.ts +1 -1
- package/dist/types/entrypoint/0.7.d.ts +1 -1
- package/dist/types/errors/client.d.ts +10 -0
- package/dist/types/errors/client.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/middleware/defaults/7702gasEstimator.d.ts +37 -0
- package/dist/types/middleware/defaults/7702gasEstimator.d.ts.map +1 -0
- package/dist/types/middleware/defaults/7702signer.d.ts +38 -0
- package/dist/types/middleware/defaults/7702signer.d.ts.map +1 -0
- package/dist/types/signer/local-account.d.ts +21 -0
- package/dist/types/signer/local-account.d.ts.map +1 -1
- package/dist/types/signer/types.d.ts +2 -0
- package/dist/types/signer/types.d.ts.map +1 -1
- package/dist/types/types.d.ts +12 -2
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils/types.d.ts +1 -0
- package/dist/types/utils/types.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +3 -3
- package/src/account/smartContractAccount.ts +39 -30
- package/src/errors/client.ts +14 -0
- package/src/index.ts +3 -0
- package/src/middleware/defaults/7702gasEstimator.ts +77 -0
- package/src/middleware/defaults/7702signer.ts +105 -0
- package/src/signer/local-account.ts +28 -0
- package/src/signer/types.ts +5 -0
- package/src/types.ts +17 -4
- package/src/utils/types.ts +4 -0
- package/src/version.ts +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type HDAccount, type HDOptions, type Hex, type LocalAccount, type PrivateKeyAccount, type SignableMessage, type TypedDataDefinition } from "viem";
|
|
2
2
|
import type { SmartAccountSigner } from "./types.js";
|
|
3
|
+
import type { Authorization } from "viem/experimental";
|
|
3
4
|
/**
|
|
4
5
|
* Represents a local account signer and provides methods to sign messages and transactions, as well as static methods to create the signer from mnemonic or private key.
|
|
5
6
|
*/
|
|
@@ -264,6 +265,26 @@ export declare class LocalAccountSigner<T extends HDAccount | PrivateKeyAccount
|
|
|
264
265
|
uint240?: undefined;
|
|
265
266
|
uint248?: undefined;
|
|
266
267
|
}, TPrimaryType extends "EIP712Domain" | keyof TTypedData = keyof TTypedData>(params: TypedDataDefinition<TTypedData, TPrimaryType>) => Promise<Hex>;
|
|
268
|
+
/**
|
|
269
|
+
* Signs an unsigned authorization using the provided private key account.
|
|
270
|
+
*
|
|
271
|
+
* @example
|
|
272
|
+
* ```ts twoslash
|
|
273
|
+
* import { LocalAccountSigner } from "@aa-sdk/core";
|
|
274
|
+
* import { generatePrivateKey } from "viem/accounts";
|
|
275
|
+
*
|
|
276
|
+
* const signer = LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey());
|
|
277
|
+
* const signedAuthorization = await signer.signAuthorization({
|
|
278
|
+
* contractAddress: "0x1234123412341234123412341234123412341234",
|
|
279
|
+
* chainId: 1,
|
|
280
|
+
* nonce: 3,
|
|
281
|
+
* });
|
|
282
|
+
* ```
|
|
283
|
+
*
|
|
284
|
+
* @param {Authorization<number, false>} unsignedAuthorization - The unsigned authorization to be signed.
|
|
285
|
+
* @returns {Promise<Authorization<number, true>>} A promise that resolves to the signed authorization.
|
|
286
|
+
*/
|
|
287
|
+
signAuthorization(this: LocalAccountSigner<PrivateKeyAccount>, unsignedAuthorization: Authorization<number, false>): Promise<Authorization<number, true>>;
|
|
267
288
|
/**
|
|
268
289
|
* Returns the address of the inner object in a specific hexadecimal format.
|
|
269
290
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-account.d.ts","sourceRoot":"","sources":["../../../src/signer/local-account.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAEpB,KAAK,mBAAmB,EACzB,MAAM,MAAM,CAAC;AAMd,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"local-account.d.ts","sourceRoot":"","sources":["../../../src/signer/local-account.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAEpB,KAAK,mBAAmB,EACzB,MAAM,MAAM,CAAC;AAMd,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,qBAAa,kBAAkB,CAC7B,CAAC,SAAS,SAAS,GAAG,iBAAiB,GAAG,YAAY,CACtD,YAAW,kBAAkB,CAAC,CAAC,CAAC;IAEhC,KAAK,EAAE,CAAC,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;;;;;OAcG;gBACS,KAAK,EAAE,CAAC;IAKpB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAIxE;IAEF;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4IAKnB,QAAQ,GAAG,CAAC,CAEb;IAEF;;;;;;;;;;;;;;;;;;OAkBG;IAEH,iBAAiB,CACf,IAAI,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,EAC3C,qBAAqB,EAAE,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,GAClD,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAIvC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,UAAU,QAAa,QAAQ,KAAK,MAAM,EAAE,CAAC,CAEpD;IAEF;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,uBAAuB,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,SAAS,GACf,kBAAkB,CAAC,SAAS,CAAC;IAKhC;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,yBAAyB,CAC9B,GAAG,EAAE,GAAG,GACP,kBAAkB,CAAC,iBAAiB,CAAC;IAKxC;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,wBAAwB,IAAI,kBAAkB,CAAC,iBAAiB,CAAC;CAIzE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Address } from "abitype";
|
|
2
2
|
import type { Hex, SignableMessage, TypedData, TypedDataDefinition } from "viem";
|
|
3
|
+
import type { Authorization } from "viem/experimental";
|
|
3
4
|
/**
|
|
4
5
|
* Extends the @interface SmartAccountSigner interface with authentication.
|
|
5
6
|
*
|
|
@@ -22,5 +23,6 @@ export interface SmartAccountSigner<Inner = any> {
|
|
|
22
23
|
getAddress: () => Promise<Address>;
|
|
23
24
|
signMessage: (message: SignableMessage) => Promise<Hex>;
|
|
24
25
|
signTypedData: <const TTypedData extends TypedData | Record<string, unknown>, TPrimaryType extends keyof TTypedData | "EIP712Domain" = keyof TTypedData>(params: TypedDataDefinition<TTypedData, TPrimaryType>) => Promise<Hex>;
|
|
26
|
+
signAuthorization?: (unsignedAuthorization: Authorization<number, false>) => Promise<Authorization<number, true>>;
|
|
25
27
|
}
|
|
26
28
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/signer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EACV,GAAG,EACH,eAAe,EACf,SAAS,EACT,mBAAmB,EACpB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/signer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EACV,GAAG,EACH,eAAe,EACf,SAAS,EACT,mBAAmB,EACpB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,GAAG,GAAG,CAC7E,SAAQ,kBAAkB,CAAC,KAAK,CAAC;IACjC,YAAY,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3D,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5C;AAID;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,KAAK,GAAG,GAAG;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IAEb,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnC,WAAW,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAExD,aAAa,EAAE,CACb,KAAK,CAAC,UAAU,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,YAAY,SAAS,MAAM,UAAU,GAAG,cAAc,GAAG,MAAM,UAAU,EAEzE,MAAM,EAAE,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,KAClD,OAAO,CAAC,GAAG,CAAC,CAAC;IAElB,iBAAiB,CAAC,EAAE,CAClB,qBAAqB,EAAE,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,KAChD,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;CAC3C"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -85,7 +85,17 @@ export interface UserOperationRequest_v7 {
|
|
|
85
85
|
paymasterData?: Hex;
|
|
86
86
|
signature: Hex;
|
|
87
87
|
}
|
|
88
|
-
export type
|
|
88
|
+
export type Eip7702ExtendedFields = {
|
|
89
|
+
eip7702Auth?: {
|
|
90
|
+
chainId: Hex;
|
|
91
|
+
nonce: Hex;
|
|
92
|
+
address: Address;
|
|
93
|
+
r: Hex;
|
|
94
|
+
s: Hex;
|
|
95
|
+
yParity: Hex;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
export type UserOperationRequest<TEntryPointVersion extends EntryPointVersion = EntryPointVersion> = (TEntryPointVersion extends "0.6.0" ? UserOperationRequest_v6 : TEntryPointVersion extends "0.7.0" ? UserOperationRequest_v7 : never) & Eip7702ExtendedFields;
|
|
89
99
|
export interface UserOperationEstimateGasResponse<TEntryPointVersion extends EntryPointVersion = EntryPointVersion> {
|
|
90
100
|
preVerificationGas: BigNumberish;
|
|
91
101
|
verificationGasLimit: BigNumberish;
|
|
@@ -142,5 +152,5 @@ export interface UserOperationStruct_v7 {
|
|
|
142
152
|
paymasterData?: BytesLike;
|
|
143
153
|
signature: BytesLike;
|
|
144
154
|
}
|
|
145
|
-
export type UserOperationStruct<TEntryPointVersion extends EntryPointVersion = EntryPointVersion> = TEntryPointVersion extends "0.6.0" ? UserOperationStruct_v6 : TEntryPointVersion extends "0.7.0" ? UserOperationStruct_v7 : never;
|
|
155
|
+
export type UserOperationStruct<TEntryPointVersion extends EntryPointVersion = EntryPointVersion> = (TEntryPointVersion extends "0.6.0" ? UserOperationStruct_v6 : TEntryPointVersion extends "0.7.0" ? UserOperationStruct_v7 : never) & Eip7702ExtendedFields;
|
|
146
156
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,4 +36,5 @@ export type OneOf<T1, T2> = IsOneOf<T1, T2> extends true ? T1 : never;
|
|
|
36
36
|
export type RecordableKeys<T> = {
|
|
37
37
|
[K in keyof T]: T[K] extends string | number | symbol ? K : never;
|
|
38
38
|
}[keyof T];
|
|
39
|
+
export type OptionalFields<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
|
|
39
40
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AAE7D;;;;;;GAMG;AAEH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAEpE,MAAM,MAAM,UAAU,CAAC,KAAK,EAAE,KAAK,SAAS,MAAM,KAAK,IAAI,QAAQ,CACjE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CACnB,GACC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAErB;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,GAAG,EAAE,CAAC;AAEP,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAIrE,MAAM,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAClC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GACb,IAAI,GACJ,KAAK,GACP,KAAK,CAAC;AASV,MAAM,MAAM,wBAAwB,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,SAAS,MAAM,SAAS,GAC1E,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,GAChB,KAAK,CAAC;AAGV,MAAM,MAAM,6BAA6B,CACvC,CAAC,EACD,KAAK,EACL,oCAAoC,SAAS,OAAO,IAClD,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACnB,IAAI,SAAS,oCAAoC,GAC/C,IAAI,GACJ,KAAK,GACP,KAAK,CAAC;AAcV,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,6BAA6B,CAC3D,CAAC,EACD,KAAK,EACL,wBAAwB,CAAC,CAAC,EAAE,KAAK,CAAC,CACnC,CAAC;AAEF,MAAM,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC;AAEtE,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAC7B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,KAAK;CAClE,CAAC,MAAM,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AAE7D;;;;;;GAMG;AAEH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAEpE,MAAM,MAAM,UAAU,CAAC,KAAK,EAAE,KAAK,SAAS,MAAM,KAAK,IAAI,QAAQ,CACjE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CACnB,GACC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAErB;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,GAAG,EAAE,CAAC;AAEP,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAIrE,MAAM,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAClC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GACb,IAAI,GACJ,KAAK,GACP,KAAK,CAAC;AASV,MAAM,MAAM,wBAAwB,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,SAAS,MAAM,SAAS,GAC1E,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,GAChB,KAAK,CAAC;AAGV,MAAM,MAAM,6BAA6B,CACvC,CAAC,EACD,KAAK,EACL,oCAAoC,SAAS,OAAO,IAClD,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACnB,IAAI,SAAS,oCAAoC,GAC/C,IAAI,GACJ,KAAK,GACP,KAAK,CAAC;AAcV,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,6BAA6B,CAC3D,CAAC,EACD,KAAK,EACL,wBAAwB,CAAC,CAAC,EAAE,KAAK,CAAC,CACnC,CAAC;AAEF,MAAM,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC;AAEtE,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAC7B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,KAAK;CAClE,CAAC,MAAM,CAAC,CAAC,CAAC;AAGX,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GACpE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "4.
|
|
1
|
+
export declare const VERSION = "4.13.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aa-sdk/core",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.13.0",
|
|
5
5
|
"description": "viem based SDK that enables interactions with ERC-4337 Smart Accounts. ABIs are based off the definitions generated in @account-abstraction/contracts",
|
|
6
6
|
"author": "Alchemy",
|
|
7
7
|
"type": "module",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"zod": "^3.22.4"
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
|
-
"viem": "^2.
|
|
58
|
+
"viem": "^2.22.6"
|
|
59
59
|
},
|
|
60
60
|
"repository": {
|
|
61
61
|
"type": "git",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"url": "https://github.com/alchemyplatform/aa-sdk/issues"
|
|
66
66
|
},
|
|
67
67
|
"homepage": "https://github.com/alchemyplatform/aa-sdk#readme",
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "6865bd7b49bc7db064bca7026914e4299febdb34"
|
|
69
69
|
}
|
|
@@ -151,9 +151,11 @@ export type ToSmartContractAccountParams<
|
|
|
151
151
|
getDummySignature: () => Hex | Promise<Hex>;
|
|
152
152
|
encodeExecute: (tx: AccountOp) => Promise<Hex>;
|
|
153
153
|
encodeBatchExecute?: (txs: AccountOp[]) => Promise<Hex>;
|
|
154
|
+
getNonce?: (nonceKey?: bigint) => Promise<bigint>;
|
|
154
155
|
// if not provided, will default to just using signMessage over the Hex
|
|
155
156
|
signUserOperationHash?: (uoHash: Hex) => Promise<Hex>;
|
|
156
157
|
encodeUpgradeToAndCall?: (params: UpgradeToAndCallParams) => Promise<Hex>;
|
|
158
|
+
getImplementationAddress?: () => Promise<NullAddress | Address>;
|
|
157
159
|
} & Omit<CustomSource, "signTransaction" | "address">;
|
|
158
160
|
// [!endregion ToSmartContractAccountParams]
|
|
159
161
|
|
|
@@ -260,6 +262,7 @@ export async function toSmartContractAccount<
|
|
|
260
262
|
source,
|
|
261
263
|
accountAddress,
|
|
262
264
|
getAccountInitCode,
|
|
265
|
+
getNonce,
|
|
263
266
|
signMessage,
|
|
264
267
|
signTypedData,
|
|
265
268
|
encodeBatchExecute,
|
|
@@ -339,11 +342,13 @@ export async function toSmartContractAccount(
|
|
|
339
342
|
getAccountInitCode,
|
|
340
343
|
signMessage,
|
|
341
344
|
signTypedData,
|
|
342
|
-
encodeBatchExecute,
|
|
343
345
|
encodeExecute,
|
|
346
|
+
encodeBatchExecute,
|
|
347
|
+
getNonce,
|
|
344
348
|
getDummySignature,
|
|
345
349
|
signUserOperationHash,
|
|
346
350
|
encodeUpgradeToAndCall,
|
|
351
|
+
getImplementationAddress,
|
|
347
352
|
} = params;
|
|
348
353
|
|
|
349
354
|
const client = createBundlerClient({
|
|
@@ -410,16 +415,18 @@ export async function toSmartContractAccount(
|
|
|
410
415
|
return initCode === "0x";
|
|
411
416
|
};
|
|
412
417
|
|
|
413
|
-
const
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
418
|
+
const getNonce_ =
|
|
419
|
+
getNonce ??
|
|
420
|
+
(async (nonceKey = 0n): Promise<bigint> => {
|
|
421
|
+
if (!(await isAccountDeployed())) {
|
|
422
|
+
return 0n;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
return entryPointContract.read.getNonce([
|
|
426
|
+
accountAddress_,
|
|
427
|
+
nonceKey,
|
|
428
|
+
]) as Promise<bigint>;
|
|
429
|
+
});
|
|
423
430
|
|
|
424
431
|
const account = toAccount({
|
|
425
432
|
address: accountAddress_,
|
|
@@ -468,25 +475,27 @@ export async function toSmartContractAccount(
|
|
|
468
475
|
return create6492Signature(isDeployed, signature);
|
|
469
476
|
};
|
|
470
477
|
|
|
471
|
-
const
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
478
|
+
const getImplementationAddress_ =
|
|
479
|
+
getImplementationAddress ??
|
|
480
|
+
(async () => {
|
|
481
|
+
const storage = await client.getStorageAt({
|
|
482
|
+
address: account.address,
|
|
483
|
+
// This is the default slot for the implementation address for Proxies
|
|
484
|
+
slot: "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc",
|
|
485
|
+
});
|
|
486
|
+
|
|
487
|
+
if (storage == null) {
|
|
488
|
+
throw new FailedToGetStorageSlotError(
|
|
489
|
+
"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc",
|
|
490
|
+
"Proxy Implementation Address"
|
|
491
|
+
);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// The storage slot contains a full bytes32, but we want only the last 20 bytes.
|
|
495
|
+
// So, slice off the leading `0x` and the first 12 bytes (24 characters), leaving the last 20 bytes, then prefix with `0x`.
|
|
496
|
+
return `0x${storage.slice(26)}`;
|
|
476
497
|
});
|
|
477
498
|
|
|
478
|
-
if (storage == null) {
|
|
479
|
-
throw new FailedToGetStorageSlotError(
|
|
480
|
-
"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc",
|
|
481
|
-
"Proxy Implementation Address"
|
|
482
|
-
);
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
// The storage slot contains a full bytes32, but we want only the last 20 bytes.
|
|
486
|
-
// So, slice off the leading `0x` and the first 12 bytes (24 characters), leaving the last 20 bytes, then prefix with `0x`.
|
|
487
|
-
return `0x${storage.slice(26)}`;
|
|
488
|
-
};
|
|
489
|
-
|
|
490
499
|
if (entryPoint.version !== "0.6.0" && entryPoint.version !== "0.7.0") {
|
|
491
500
|
throw new InvalidEntryPointError(chain, entryPoint.version);
|
|
492
501
|
}
|
|
@@ -510,9 +519,9 @@ export async function toSmartContractAccount(
|
|
|
510
519
|
encodeUpgradeToAndCall: encodeUpgradeToAndCall_,
|
|
511
520
|
getEntryPoint: () => entryPoint,
|
|
512
521
|
isAccountDeployed,
|
|
513
|
-
getAccountNonce:
|
|
522
|
+
getAccountNonce: getNonce_,
|
|
514
523
|
signMessageWith6492,
|
|
515
524
|
signTypedDataWith6492,
|
|
516
|
-
getImplementationAddress,
|
|
525
|
+
getImplementationAddress: getImplementationAddress_,
|
|
517
526
|
};
|
|
518
527
|
}
|
package/src/errors/client.ts
CHANGED
|
@@ -103,3 +103,17 @@ export class EntityIdOverrideError extends BaseError {
|
|
|
103
103
|
super(`EntityId of 0 is reserved for the owner and cannot be used`);
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Error class denoting that the provided ma v2 account mode is invalid.
|
|
109
|
+
*/
|
|
110
|
+
export class InvalidModularAccountV2Mode extends BaseError {
|
|
111
|
+
override name = "InvalidModularAccountV2Mode";
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Initializes a new instance of the error message with a default message indicating that the provided ma v2 account mode is invalid.
|
|
115
|
+
*/
|
|
116
|
+
constructor() {
|
|
117
|
+
super(`The provided account mode is invalid for ModularAccount V2`);
|
|
118
|
+
}
|
|
119
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -76,6 +76,7 @@ export {
|
|
|
76
76
|
InvalidEntityIdError,
|
|
77
77
|
InvalidNonceKeyError,
|
|
78
78
|
EntityIdOverrideError,
|
|
79
|
+
InvalidModularAccountV2Mode,
|
|
79
80
|
} from "./errors/client.js";
|
|
80
81
|
export {
|
|
81
82
|
EntryPointNotFoundError,
|
|
@@ -92,6 +93,8 @@ export {
|
|
|
92
93
|
} from "./errors/useroperation.js";
|
|
93
94
|
export { LogLevel, Logger } from "./logger.js";
|
|
94
95
|
export { middlewareActions } from "./middleware/actions.js";
|
|
96
|
+
export { default7702UserOpSigner } from "./middleware/defaults/7702signer.js";
|
|
97
|
+
export { default7702GasEstimator } from "./middleware/defaults/7702gasEstimator.js";
|
|
95
98
|
export { defaultFeeEstimator } from "./middleware/defaults/feeEstimator.js";
|
|
96
99
|
export { defaultGasEstimator } from "./middleware/defaults/gasEstimator.js";
|
|
97
100
|
export { defaultPaymasterAndData } from "./middleware/defaults/paymasterAndData.js";
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { zeroHash } from "viem";
|
|
2
|
+
import { AccountNotFoundError } from "../../errors/account.js";
|
|
3
|
+
import type { UserOperationStruct } from "../../types.js";
|
|
4
|
+
import type { ClientMiddlewareFn } from "../types";
|
|
5
|
+
import { defaultGasEstimator } from "./gasEstimator.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A middleware function to estimate the gas usage of a user operation when using an EIP-7702 delegated account. Has an optional custom gas estimator.
|
|
9
|
+
* This function is only compatible with accounts using EntryPoint v0.7.0, and the account must have an implementation address defined in `getImplementationAddress()`.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts twoslash
|
|
13
|
+
* import {
|
|
14
|
+
* default7702GasEstimator,
|
|
15
|
+
* default7702UserOpSigner,
|
|
16
|
+
* createSmartAccountClient,
|
|
17
|
+
* type SmartAccountClient,
|
|
18
|
+
* } from "@aa-sdk/core";
|
|
19
|
+
* import {
|
|
20
|
+
* createModularAccountV2,
|
|
21
|
+
* type CreateModularAccountV2ClientParams,
|
|
22
|
+
* } from "@account-kit/smart-contracts";
|
|
23
|
+
*
|
|
24
|
+
* async function createSMA7702AccountClient(
|
|
25
|
+
* config: CreateModularAccountV2ClientParams
|
|
26
|
+
* ): Promise<SmartAccountClient> {
|
|
27
|
+
* const sma7702Account = await createModularAccountV2({ ...config, mode: "7702" });
|
|
28
|
+
*
|
|
29
|
+
* return createSmartAccountClient({
|
|
30
|
+
* account: sma7702Account,
|
|
31
|
+
* gasEstimator: default7702GasEstimator(config.gasEstimator),
|
|
32
|
+
* signUserOperation: default7702UserOpSigner(config.signUserOperation),
|
|
33
|
+
* ...config,
|
|
34
|
+
* });
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @param {ClientMiddlewareFn} [gasEstimator] Optional custom gas estimator function
|
|
39
|
+
* @returns {Function} A function that takes user operation struct and parameters, estimates gas usage, and returns the user operation with gas limits.
|
|
40
|
+
*/
|
|
41
|
+
export const default7702GasEstimator: (
|
|
42
|
+
gasEstimator?: ClientMiddlewareFn
|
|
43
|
+
) => ClientMiddlewareFn =
|
|
44
|
+
(gasEstimator?: ClientMiddlewareFn) => async (struct, params) => {
|
|
45
|
+
const gasEstimator_ = gasEstimator ?? defaultGasEstimator(params.client);
|
|
46
|
+
|
|
47
|
+
const account = params.account ?? params.client.account;
|
|
48
|
+
if (!account) {
|
|
49
|
+
throw new AccountNotFoundError();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const entryPoint = account.getEntryPoint();
|
|
53
|
+
if (entryPoint.version !== "0.7.0") {
|
|
54
|
+
throw new Error(
|
|
55
|
+
"This middleware is only compatible with EntryPoint v0.7.0"
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const implementationAddress = await account.getImplementationAddress();
|
|
60
|
+
|
|
61
|
+
// Note: does not omit the delegation from estimation if the account is already 7702 delegated.
|
|
62
|
+
|
|
63
|
+
(struct as UserOperationStruct<"0.7.0">).eip7702Auth = {
|
|
64
|
+
chainId: "0x0",
|
|
65
|
+
nonce: "0x0",
|
|
66
|
+
address: implementationAddress,
|
|
67
|
+
r: zeroHash, // aka `bytes32(0)`
|
|
68
|
+
s: zeroHash,
|
|
69
|
+
yParity: "0x0",
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const estimatedUO = await gasEstimator_(struct, params);
|
|
73
|
+
|
|
74
|
+
estimatedUO.eip7702Auth = undefined; // Strip out the auth after estimation.
|
|
75
|
+
|
|
76
|
+
return estimatedUO;
|
|
77
|
+
};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { toHex } from "viem";
|
|
2
|
+
import { isSmartAccountWithSigner } from "../../account/smartContractAccount.js";
|
|
3
|
+
import { AccountNotFoundError } from "../../errors/account.js";
|
|
4
|
+
import { ChainNotFoundError } from "../../errors/client.js";
|
|
5
|
+
import type { ClientMiddlewareFn } from "../types";
|
|
6
|
+
import { defaultUserOpSigner } from "./userOpSigner.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Provides a default middleware function for signing user operations with a client account when using EIP-7702 delegated accounts.
|
|
10
|
+
* If the signer doesn't support `signAuthorization`, then this just runs the provided `signUserOperation` middleware.
|
|
11
|
+
* This function is only compatible with accounts using EntryPoint v0.7.0, and the account must have an implementation address defined in `getImplementationAddress()`.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts twoslash
|
|
15
|
+
* import {
|
|
16
|
+
* default7702GasEstimator,
|
|
17
|
+
* default7702UserOpSigner,
|
|
18
|
+
* createSmartAccountClient,
|
|
19
|
+
* type SmartAccountClient,
|
|
20
|
+
* } from "@aa-sdk/core";
|
|
21
|
+
* import {
|
|
22
|
+
* createModularAccountV2,
|
|
23
|
+
* type CreateModularAccountV2ClientParams,
|
|
24
|
+
* } from "@account-kit/smart-contracts";
|
|
25
|
+
*
|
|
26
|
+
* async function createSMA7702AccountClient(
|
|
27
|
+
* config: CreateModularAccountV2ClientParams
|
|
28
|
+
* ): Promise<SmartAccountClient> {
|
|
29
|
+
* const sma7702Account = await createModularAccountV2({ ...config, mode: "7702" });
|
|
30
|
+
*
|
|
31
|
+
* return createSmartAccountClient({
|
|
32
|
+
* account: sma7702Account,
|
|
33
|
+
* gasEstimator: default7702GasEstimator(config.gasEstimator),
|
|
34
|
+
* signUserOperation: default7702UserOpSigner(config.signUserOperation),
|
|
35
|
+
* ...config,
|
|
36
|
+
* });
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @param {ClientMiddlewareFn} [userOpSigner] Optional user operation signer function
|
|
41
|
+
* @returns {Function} A middleware function that signs EIP-7702 authorization tuples if necessary, and also uses the provided or default user operation signer to generate the user op signature.
|
|
42
|
+
*/
|
|
43
|
+
export const default7702UserOpSigner: (
|
|
44
|
+
userOpSigner?: ClientMiddlewareFn
|
|
45
|
+
) => ClientMiddlewareFn =
|
|
46
|
+
(userOpSigner?: ClientMiddlewareFn) => async (struct, params) => {
|
|
47
|
+
const userOpSigner_ = userOpSigner ?? defaultUserOpSigner;
|
|
48
|
+
|
|
49
|
+
const uo = await userOpSigner_(struct, params);
|
|
50
|
+
|
|
51
|
+
const account = params.account ?? params.client.account;
|
|
52
|
+
const { client } = params;
|
|
53
|
+
|
|
54
|
+
if (!account || !isSmartAccountWithSigner(account)) {
|
|
55
|
+
throw new AccountNotFoundError();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const signer = account.getSigner();
|
|
59
|
+
|
|
60
|
+
if (!signer.signAuthorization) {
|
|
61
|
+
return uo;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (!client.chain) {
|
|
65
|
+
throw new ChainNotFoundError();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const code = (await client.getCode({ address: account.address })) ?? "0x";
|
|
69
|
+
|
|
70
|
+
const implAddress = await account.getImplementationAddress();
|
|
71
|
+
|
|
72
|
+
const expectedCode = "0xef0100" + implAddress.slice(2);
|
|
73
|
+
|
|
74
|
+
if (code.toLowerCase() === expectedCode.toLowerCase()) {
|
|
75
|
+
// If the delegation already matches the expected, then we don't need to sign and include an authorization tuple.
|
|
76
|
+
return uo;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const accountNonce = await params.client.getTransactionCount({
|
|
80
|
+
address: account.address,
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
const authSignature = await signer.signAuthorization({
|
|
84
|
+
chainId: client.chain.id,
|
|
85
|
+
contractAddress: implAddress,
|
|
86
|
+
nonce: accountNonce,
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
const { r, s } = authSignature;
|
|
90
|
+
|
|
91
|
+
const yParity = authSignature.yParity ?? authSignature.v - 27n;
|
|
92
|
+
|
|
93
|
+
return {
|
|
94
|
+
...uo,
|
|
95
|
+
eip7702Auth: {
|
|
96
|
+
// deepHexlify doesn't encode number(0) correctly, it returns "0x"
|
|
97
|
+
chainId: toHex(client.chain.id),
|
|
98
|
+
nonce: toHex(accountNonce),
|
|
99
|
+
address: implAddress,
|
|
100
|
+
r,
|
|
101
|
+
s,
|
|
102
|
+
yParity: toHex(yParity),
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
};
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
privateKeyToAccount,
|
|
15
15
|
} from "viem/accounts";
|
|
16
16
|
import type { SmartAccountSigner } from "./types.js";
|
|
17
|
+
import type { Authorization } from "viem/experimental";
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* Represents a local account signer and provides methods to sign messages and transactions, as well as static methods to create the signer from mnemonic or private key.
|
|
@@ -95,6 +96,33 @@ export class LocalAccountSigner<
|
|
|
95
96
|
return this.inner.signTypedData(params);
|
|
96
97
|
};
|
|
97
98
|
|
|
99
|
+
/**
|
|
100
|
+
* Signs an unsigned authorization using the provided private key account.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts twoslash
|
|
104
|
+
* import { LocalAccountSigner } from "@aa-sdk/core";
|
|
105
|
+
* import { generatePrivateKey } from "viem/accounts";
|
|
106
|
+
*
|
|
107
|
+
* const signer = LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey());
|
|
108
|
+
* const signedAuthorization = await signer.signAuthorization({
|
|
109
|
+
* contractAddress: "0x1234123412341234123412341234123412341234",
|
|
110
|
+
* chainId: 1,
|
|
111
|
+
* nonce: 3,
|
|
112
|
+
* });
|
|
113
|
+
* ```
|
|
114
|
+
*
|
|
115
|
+
* @param {Authorization<number, false>} unsignedAuthorization - The unsigned authorization to be signed.
|
|
116
|
+
* @returns {Promise<Authorization<number, true>>} A promise that resolves to the signed authorization.
|
|
117
|
+
*/
|
|
118
|
+
|
|
119
|
+
signAuthorization(
|
|
120
|
+
this: LocalAccountSigner<PrivateKeyAccount>,
|
|
121
|
+
unsignedAuthorization: Authorization<number, false>
|
|
122
|
+
): Promise<Authorization<number, true>> {
|
|
123
|
+
return this.inner.experimental_signAuthorization(unsignedAuthorization);
|
|
124
|
+
}
|
|
125
|
+
|
|
98
126
|
/**
|
|
99
127
|
* Returns the address of the inner object in a specific hexadecimal format.
|
|
100
128
|
*
|
package/src/signer/types.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
TypedData,
|
|
6
6
|
TypedDataDefinition,
|
|
7
7
|
} from "viem";
|
|
8
|
+
import type { Authorization } from "viem/experimental";
|
|
8
9
|
|
|
9
10
|
// [!region SmartAccountAuthenticator]
|
|
10
11
|
/**
|
|
@@ -42,5 +43,9 @@ export interface SmartAccountSigner<Inner = any> {
|
|
|
42
43
|
>(
|
|
43
44
|
params: TypedDataDefinition<TTypedData, TPrimaryType>
|
|
44
45
|
) => Promise<Hex>;
|
|
46
|
+
|
|
47
|
+
signAuthorization?: (
|
|
48
|
+
unsignedAuthorization: Authorization<number, false>
|
|
49
|
+
) => Promise<Authorization<number, true>>;
|
|
45
50
|
}
|
|
46
51
|
// [!endregion SmartAccountSigner]
|
package/src/types.ts
CHANGED
|
@@ -201,15 +201,27 @@ export interface UserOperationRequest_v7 {
|
|
|
201
201
|
}
|
|
202
202
|
// [!endregion UserOperationRequest_v7]
|
|
203
203
|
|
|
204
|
+
export type Eip7702ExtendedFields = {
|
|
205
|
+
eip7702Auth?: {
|
|
206
|
+
chainId: Hex;
|
|
207
|
+
nonce: Hex;
|
|
208
|
+
address: Address;
|
|
209
|
+
r: Hex;
|
|
210
|
+
s: Hex;
|
|
211
|
+
yParity: Hex;
|
|
212
|
+
};
|
|
213
|
+
};
|
|
214
|
+
|
|
204
215
|
// [!region UserOperationRequest]
|
|
205
216
|
// Reference: https://eips.ethereum.org/EIPS/eip-4337#definitions
|
|
206
217
|
export type UserOperationRequest<
|
|
207
218
|
TEntryPointVersion extends EntryPointVersion = EntryPointVersion
|
|
208
|
-
> = TEntryPointVersion extends "0.6.0"
|
|
219
|
+
> = (TEntryPointVersion extends "0.6.0"
|
|
209
220
|
? UserOperationRequest_v6
|
|
210
221
|
: TEntryPointVersion extends "0.7.0"
|
|
211
222
|
? UserOperationRequest_v7
|
|
212
|
-
: never
|
|
223
|
+
: never) &
|
|
224
|
+
Eip7702ExtendedFields;
|
|
213
225
|
|
|
214
226
|
// [!endregion UserOperationRequest]
|
|
215
227
|
|
|
@@ -347,9 +359,10 @@ export interface UserOperationStruct_v7 {
|
|
|
347
359
|
// [!region UserOperationStruct]
|
|
348
360
|
export type UserOperationStruct<
|
|
349
361
|
TEntryPointVersion extends EntryPointVersion = EntryPointVersion
|
|
350
|
-
> = TEntryPointVersion extends "0.6.0"
|
|
362
|
+
> = (TEntryPointVersion extends "0.6.0"
|
|
351
363
|
? UserOperationStruct_v6
|
|
352
364
|
: TEntryPointVersion extends "0.7.0"
|
|
353
365
|
? UserOperationStruct_v7
|
|
354
|
-
: never
|
|
366
|
+
: never) &
|
|
367
|
+
Eip7702ExtendedFields;
|
|
355
368
|
// [!endregion UserOperationStruct]
|
package/src/utils/types.ts
CHANGED
|
@@ -92,3 +92,7 @@ export type OneOf<T1, T2> = IsOneOf<T1, T2> extends true ? T1 : never;
|
|
|
92
92
|
export type RecordableKeys<T> = {
|
|
93
93
|
[K in keyof T]: T[K] extends string | number | symbol ? K : never;
|
|
94
94
|
}[keyof T];
|
|
95
|
+
|
|
96
|
+
// Marks a subset of the fields of T as optional.
|
|
97
|
+
export type OptionalFields<T, K extends keyof T> = Pick<Partial<T>, K> &
|
|
98
|
+
Omit<T, K>;
|
package/src/version.ts
CHANGED