@account-kit/infra 4.13.0 → 4.14.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/actions/types.d.ts +14 -2
- package/dist/esm/actions/types.js.map +1 -1
- package/dist/esm/alchemyTransport.js +1 -0
- package/dist/esm/alchemyTransport.js.map +1 -1
- package/dist/esm/client/smartAccountClient.d.ts +1 -1
- package/dist/esm/client/smartAccountClient.js +11 -4
- package/dist/esm/client/smartAccountClient.js.map +1 -1
- package/dist/esm/client/types.d.ts +11 -2
- package/dist/esm/client/types.js.map +1 -1
- package/dist/esm/gas-manager.d.ts +2 -0
- package/dist/esm/gas-manager.js +2 -0
- package/dist/esm/gas-manager.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/middleware/gasManager.d.ts +43 -4
- package/dist/esm/middleware/gasManager.js +137 -3
- package/dist/esm/middleware/gasManager.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/actions/types.d.ts +14 -2
- package/dist/types/actions/types.d.ts.map +1 -1
- package/dist/types/alchemyTransport.d.ts.map +1 -1
- package/dist/types/client/smartAccountClient.d.ts +1 -1
- package/dist/types/client/smartAccountClient.d.ts.map +1 -1
- package/dist/types/client/types.d.ts +11 -2
- package/dist/types/client/types.d.ts.map +1 -1
- package/dist/types/gas-manager.d.ts +2 -0
- package/dist/types/gas-manager.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/middleware/gasManager.d.ts +43 -4
- package/dist/types/middleware/gasManager.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +4 -4
- package/src/actions/types.ts +41 -2
- package/src/alchemyTransport.ts +1 -0
- package/src/client/smartAccountClient.ts +12 -5
- package/src/client/types.ts +13 -1
- package/src/gas-manager.ts +2 -0
- package/src/index.ts +4 -1
- package/src/middleware/gasManager.ts +234 -6
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/actions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/actions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE/C,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB;;;OAGG;IACH,WAAW,gBAAgB;CAC5B;AAED,oBAAY,kBAAkB;IAC5B,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAED,MAAM,MAAM,wCAAwC,GAAG;IACrD,mBAAmB;IACnB,UAAU,EAAE,OAAO;IACnB,WAAW,CAAC,EAAE,IAAI;CACnB,CAAC;AAEF,MAAM,MAAM,yCAAyC,GAAG;IACtD,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,yBAAyB,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,yBAA0B,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACpE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,oCAAoC,GAAG;IACjD;QACE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC5B,UAAU,EAAE,OAAO,CAAC;QACpB,cAAc,EAAE,GAAG,CAAC;QACpB,aAAa,EAAE,oBAAoB,CAAC;QACpC,SAAS,CAAC,EAAE,sBAAsB,CAAC;KACpC;CACF,CAAC;AAEF,MAAM,MAAM,qCAAqC,CAC/C,kBAAkB,SAAS,iBAAiB,GAAG,iBAAiB,IAC9D,IAAI,CACN,oBAAoB,EAClB,cAAc,GACd,oBAAoB,GACpB,sBAAsB,GACtB,cAAc,GACd,sBAAsB,CACzB,GACC,CAAC,kBAAkB,SAAS,OAAO,GAC/B;IACE,gBAAgB,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC;CACrE,GACD,kBAAkB,SAAS,OAAO,GAClC,IAAI,CACF,oBAAoB,CAAC,OAAO,CAAC,EAC3B,WAAW,GACX,eAAe,GACf,+BAA+B,GAC/B,yBAAyB,CAC5B,GACD,KAAK,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alchemyTransport.d.ts","sourceRoot":"","sources":["../../src/alchemyTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,eAAe,EACrB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC5B;KACG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK;CACvB,GACD,KAAK,CAAC;AAEV,KAAK,oBAAoB,GAAG;IAC1B,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"alchemyTransport.d.ts","sourceRoot":"","sources":["../../src/alchemyTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,eAAe,EACrB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC5B;KACG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK;CACvB,GACD,KAAK,CAAC;AAEV,KAAK,oBAAoB,GAAG;IAC1B,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAcF,MAAM,MAAM,sBAAsB,GAAG,CACjC,CAAC,gBAAgB,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,GAChD,CAAC,oBAAoB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CACnD,GAAG;IACF,wCAAwC;IACxC,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;IACvD,8CAA8C;IAC9C,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;IACvD,YAAY,CAAC,EAAE,WAAW,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;CACjE,CAAC;AAEF,KAAK,oBAAoB,GAAG,SAAS,CACnC,SAAS,EACT;IACE,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAAC;CACvD,EACD,gBAAgB,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAC5D,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG;IACpD,aAAa,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7C,MAAM,EAAE,sBAAsB,CAAC;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,GACX,SAAS,IAAI,gBAAgB,CAE/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CA+ExE"}
|
|
@@ -9,7 +9,7 @@ export declare function getSignerTypeHeader<TAccount extends SmartContractAccoun
|
|
|
9
9
|
export type AlchemySmartAccountClientConfig<chain extends Chain | undefined = Chain | undefined, account extends SmartContractAccount | undefined = SmartContractAccount | undefined, context extends UserOperationContext | undefined = UserOperationContext | undefined> = {
|
|
10
10
|
account?: account;
|
|
11
11
|
useSimulation?: boolean;
|
|
12
|
-
policyId?: string;
|
|
12
|
+
policyId?: string | string[];
|
|
13
13
|
} & Pick<SmartAccountClientConfig<AlchemyTransport, chain, account, context>, "customMiddleware" | "feeEstimator" | "gasEstimator" | "signUserOperation" | "transport" | "chain" | "opts">;
|
|
14
14
|
export type BaseAlchemyActions<chain extends Chain | undefined = Chain | undefined, account extends SmartContractAccount | undefined = SmartContractAccount | undefined, context extends UserOperationContext | undefined = UserOperationContext | undefined> = SmartAccountClientActions<chain, account, context> & AlchemySmartAccountClientActions<account, context>;
|
|
15
15
|
export type AlchemySmartAccountClient_Base<chain extends Chain | undefined = Chain | undefined, account extends SmartContractAccount | undefined = SmartContractAccount | undefined, actions extends Record<string, unknown> = Record<string, unknown>, context extends UserOperationContext | undefined = UserOperationContext | undefined> = Prettify<SmartAccountClient<AlchemyTransport, chain, account, actions & BaseAlchemyActions<chain, account, context>, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartAccountClient.d.ts","sourceRoot":"","sources":["../../../src/client/smartAccountClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,EAEL,KAAK,gCAAgC,EACtC,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,wBAAgB,mBAAmB,CACjC,QAAQ,SAAS,8BAA8B,EAC/C,OAAO,EAAE,QAAQ;;EAElB;AAGD,MAAM,MAAM,+BAA+B,CACzC,KAAK,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACnD,OAAO,SAAS,oBAAoB,GAAG,SAAS,GAC5C,oBAAoB,GACpB,SAAS,EACb,OAAO,SAAS,oBAAoB,GAAG,SAAS,GAC5C,oBAAoB,GACpB,SAAS,IACX;IACF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"smartAccountClient.d.ts","sourceRoot":"","sources":["../../../src/client/smartAccountClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type BundlerClient, type Erc7677RpcSchema, type UserOperationRequest } from "@aa-sdk/core";
|
|
2
|
-
import type { SimulateUserOperationAssetChangesRequest, SimulateUserOperationAssetChangesResponse } from "../actions/types";
|
|
2
|
+
import type { SimulateUserOperationAssetChangesRequest, SimulateUserOperationAssetChangesResponse, RequestGasAndPaymasterAndDataRequest, RequestGasAndPaymasterAndDataResponse } from "../actions/types";
|
|
3
3
|
import type { AlchemyTransport } from "../alchemyTransport";
|
|
4
4
|
export type AlchemyRpcSchema = [
|
|
5
5
|
{
|
|
@@ -14,7 +14,12 @@ export type AlchemyRpcSchema = [
|
|
|
14
14
|
},
|
|
15
15
|
...Erc7677RpcSchema<{
|
|
16
16
|
policyId: string;
|
|
17
|
-
}
|
|
17
|
+
}>,
|
|
18
|
+
{
|
|
19
|
+
Method: "alchemy_requestGasAndPaymasterAndData";
|
|
20
|
+
Parameters: RequestGasAndPaymasterAndDataRequest;
|
|
21
|
+
ReturnType: RequestGasAndPaymasterAndDataResponse;
|
|
22
|
+
}
|
|
18
23
|
];
|
|
19
24
|
export type ClientWithAlchemyMethods = BundlerClient<AlchemyTransport> & {
|
|
20
25
|
request: BundlerClient<AlchemyTransport>["request"] & {
|
|
@@ -26,6 +31,10 @@ export type ClientWithAlchemyMethods = BundlerClient<AlchemyTransport> & {
|
|
|
26
31
|
method: "rundler_maxPriorityFeePerGas";
|
|
27
32
|
params: [];
|
|
28
33
|
}): Promise<UserOperationRequest["maxPriorityFeePerGas"]>;
|
|
34
|
+
request(args: {
|
|
35
|
+
method: "alchemy_requestGasAndPaymasterAndData";
|
|
36
|
+
params: RequestGasAndPaymasterAndDataRequest;
|
|
37
|
+
}): Promise<RequestGasAndPaymasterAndDataResponse>;
|
|
29
38
|
}["request"];
|
|
30
39
|
};
|
|
31
40
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,wCAAwC,EACxC,yCAAyC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,wCAAwC,EACxC,yCAAyC,EACzC,oCAAoC,EACpC,qCAAqC,EACtC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B;QACE,MAAM,EAAE,2CAA2C,CAAC;QACpD,UAAU,EAAE,wCAAwC,CAAC;QACrD,UAAU,EAAE,yCAAyC,CAAC;KACvD;IACD;QACE,MAAM,EAAE,8BAA8B,CAAC;QACvC,UAAU,EAAE,EAAE,CAAC;QACf,UAAU,EAAE,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;KAC1D;IACD,GAAG,gBAAgB,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC;QACE,MAAM,EAAE,uCAAuC,CAAC;QAChD,UAAU,EAAE,oCAAoC,CAAC;QACjD,UAAU,EAAE,qCAAqC,CAAC;KACnD;CACF,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAC,gBAAgB,CAAC,GAAG;IACvE,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,GACjD;QACE,OAAO,CAAC,IAAI,EAAE;YACZ,MAAM,EAAE,2CAA2C,CAAC;YACpD,MAAM,EAAE,wCAAwC,CAAC;SAClD,GAAG,OAAO,CAAC,yCAAyC,CAAC,CAAC;QAEvD,OAAO,CAAC,IAAI,EAAE;YACZ,MAAM,EAAE,8BAA8B,CAAC;YACvC,MAAM,EAAE,EAAE,CAAC;SACZ,GAAG,OAAO,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAE1D,OAAO,CAAC,IAAI,EAAE;YACZ,MAAM,EAAE,uCAAuC,CAAC;YAChD,MAAM,EAAE,oCAAoC,CAAC;SAC9C,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC;KACpD,CAAC,SAAS,CAAC,CAAC;CAChB,CAAC"}
|
|
@@ -15,6 +15,8 @@ export declare const AlchemyPaymasterAddressV1 = "0xc03aac639bb21233e01393819703
|
|
|
15
15
|
*
|
|
16
16
|
* @param {Chain} chain The chain for which the paymaster address is required
|
|
17
17
|
* @returns {Address} The Alchemy paymaster address corresponding to the specified chain
|
|
18
|
+
*
|
|
19
|
+
* @deprecated This chain list in this function is no longer maintained since the ERC-7677 middleware is typically used to resolve the paymaster address
|
|
18
20
|
*/
|
|
19
21
|
export declare const getAlchemyPaymasterAddress: (chain: Chain) => Address;
|
|
20
22
|
//# sourceMappingURL=gas-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas-manager.d.ts","sourceRoot":"","sources":["../../src/gas-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAmB3C,eAAO,MAAM,yBAAyB,+CACQ,CAAC;AAC/C,eAAO,MAAM,yBAAyB,+CACQ,CAAC;AAC/C,eAAO,MAAM,0BAA0B,+CACO,CAAC;AAC/C,eAAO,MAAM,yBAAyB,+CACQ,CAAC;AAE/C
|
|
1
|
+
{"version":3,"file":"gas-manager.d.ts","sourceRoot":"","sources":["../../src/gas-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAmB3C,eAAO,MAAM,yBAAyB,+CACQ,CAAC;AAC/C,eAAO,MAAM,yBAAyB,+CACQ,CAAC;AAC/C,eAAO,MAAM,0BAA0B,+CACO,CAAC;AAC/C,eAAO,MAAM,yBAAyB,+CACQ,CAAC;AAE/C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0BAA0B,UAAW,KAAK,KAAG,OAwBzD,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export { getDefaultUserOperationFeeOptions } from "./defaults.js";
|
|
|
19
19
|
export { getAlchemyPaymasterAddress } from "./gas-manager.js";
|
|
20
20
|
export { alchemyFeeEstimator } from "./middleware/feeEstimator.js";
|
|
21
21
|
export type * from "./middleware/gasManager.js";
|
|
22
|
-
export { alchemyGasManagerMiddleware } from "./middleware/gasManager.js";
|
|
22
|
+
export { alchemyGasManagerMiddleware, alchemyGasAndPaymasterAndDataMiddleware, } from "./middleware/gasManager.js";
|
|
23
23
|
export { alchemyUserOperationSimulator } from "./middleware/userOperationSimulator.js";
|
|
24
24
|
export type * from "./schema.js";
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,2CAA2C,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,mBAAmB,oBAAoB,CAAC;AACxC,mBAAmB,uBAAuB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACpE,mBAAmB,aAAa,CAAC;AACjC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,MAAM,EACN,OAAO,EACP,QAAQ,EACR,cAAc,EACd,eAAe,EACf,OAAO,EACP,WAAW,EACX,aAAa,EACb,OAAO,EACP,KAAK,EACL,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,IAAI,EACJ,WAAW,EACX,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,UAAU,EACV,UAAU,EACV,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,mBAAmB,4CAA4C,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,mBAAmB,qCAAqC,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,mBAAmB,uBAAuB,CAAC;AAC3C,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,mBAAmB,gCAAgC,CAAC;AACpD,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjF,mBAAmB,mBAAmB,CAAC;AACvC,OAAO,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,mBAAmB,4BAA4B,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,2CAA2C,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,mBAAmB,oBAAoB,CAAC;AACxC,mBAAmB,uBAAuB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACpE,mBAAmB,aAAa,CAAC;AACjC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,MAAM,EACN,OAAO,EACP,QAAQ,EACR,cAAc,EACd,eAAe,EACf,OAAO,EACP,WAAW,EACX,aAAa,EACb,OAAO,EACP,KAAK,EACL,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,IAAI,EACJ,WAAW,EACX,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,UAAU,EACV,UAAU,EACV,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,mBAAmB,4CAA4C,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,mBAAmB,qCAAqC,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,mBAAmB,uBAAuB,CAAC;AAC3C,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,mBAAmB,gCAAgC,CAAC;AACpD,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjF,mBAAmB,mBAAmB,CAAC;AACvC,OAAO,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,mBAAmB,4BAA4B,CAAC;AAChD,OAAO,EACL,2BAA2B,EAC3B,uCAAuC,GACxC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,mBAAmB,aAAa,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type { ClientMiddlewareConfig } from "@aa-sdk/core";
|
|
1
|
+
import type { ClientMiddlewareConfig, ClientMiddlewareFn } from "@aa-sdk/core";
|
|
2
|
+
import type { AlchemyTransport } from "../alchemyTransport.js";
|
|
2
3
|
/**
|
|
3
|
-
* Paymaster middleware factory that uses Alchemy's Gas Manager for sponsoring
|
|
4
|
+
* Paymaster middleware factory that uses Alchemy's Gas Manager for sponsoring
|
|
5
|
+
* transactions. Adheres to the ERC-7677 standardized communication protocol.
|
|
4
6
|
*
|
|
5
7
|
* @example
|
|
6
8
|
* ```ts
|
|
@@ -14,8 +16,45 @@ import type { ClientMiddlewareConfig } from "@aa-sdk/core";
|
|
|
14
16
|
* });
|
|
15
17
|
* ```
|
|
16
18
|
*
|
|
17
|
-
* @param {string} policyId the policyId for Alchemy's gas manager
|
|
19
|
+
* @param {string | string[]} policyId the policyId (or list of policyIds) for Alchemy's gas manager
|
|
18
20
|
* @returns {Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "paymasterAndData">} partial client middleware configuration containing `dummyPaymasterAndData` and `paymasterAndData`
|
|
19
21
|
*/
|
|
20
|
-
export declare function alchemyGasManagerMiddleware(policyId: string): Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "paymasterAndData">;
|
|
22
|
+
export declare function alchemyGasManagerMiddleware(policyId: string | string[]): Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "paymasterAndData">;
|
|
23
|
+
interface AlchemyGasAndPaymasterAndDataMiddlewareParams {
|
|
24
|
+
policyId: string | string[];
|
|
25
|
+
transport: AlchemyTransport;
|
|
26
|
+
gasEstimatorOverride?: ClientMiddlewareFn;
|
|
27
|
+
feeEstimatorOverride?: ClientMiddlewareFn;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Paymaster middleware factory that uses Alchemy's Gas Manager for sponsoring
|
|
31
|
+
* transactions. Uses Alchemy's custom `alchemy_requestGasAndPaymasterAndData`
|
|
32
|
+
* method instead of conforming to the standard ERC-7677 interface. Note that
|
|
33
|
+
* if you use `createAlchemySmartAccountClient`, this middleware is already
|
|
34
|
+
* used by default and you do not need to manually include it.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts twoslash
|
|
38
|
+
* import { sepolia, alchemy, alchemyGasAndPaymasterAndDataMiddleware } from "@account-kit/infra";
|
|
39
|
+
* import { createSmartAccountClient } from "@aa-sdk/core";
|
|
40
|
+
*
|
|
41
|
+
* const client = createSmartAccountClient({
|
|
42
|
+
* transport: alchemy({ apiKey: "your-api-key" }),
|
|
43
|
+
* chain: sepolia,
|
|
44
|
+
* ...alchemyGasAndPaymasterAndDataMiddleware({
|
|
45
|
+
* policyId: "policyId",
|
|
46
|
+
* transport: alchemy({ apiKey: "your-api-key" }),
|
|
47
|
+
* })
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @param {AlchemyGasAndPaymasterAndDataMiddlewareParams} params configuration params
|
|
52
|
+
* @param {AlchemyGasAndPaymasterAndDataMiddlewareParams.policyId} params.policyId the policyId for Alchemy's gas manager
|
|
53
|
+
* @param {AlchemyGasAndPaymasterAndDataMiddlewareParams.transport} params.transport fallback transport to use for fee estimation when not using the paymaster
|
|
54
|
+
* @param {AlchemyGasAndPaymasterAndDataMiddlewareParams.gasEstimatorOverride} params.gasEstimatorOverride custom gas estimator middleware
|
|
55
|
+
* @param {AlchemyGasAndPaymasterAndDataMiddlewareParams.feeEstimatorOverride} params.feeEstimatorOverride custom fee estimator middleware
|
|
56
|
+
* @returns {Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "paymasterAndData">} partial client middleware configuration containing `dummyPaymasterAndData` and `paymasterAndData`
|
|
57
|
+
*/
|
|
58
|
+
export declare function alchemyGasAndPaymasterAndDataMiddleware(params: AlchemyGasAndPaymasterAndDataMiddlewareParams): Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "feeEstimator" | "gasEstimator" | "paymasterAndData">;
|
|
59
|
+
export {};
|
|
21
60
|
//# sourceMappingURL=gasManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gasManager.d.ts","sourceRoot":"","sources":["../../../src/middleware/gasManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"gasManager.d.ts","sourceRoot":"","sources":["../../../src/middleware/gasManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EAMnB,MAAM,cAAc,CAAC;AAetB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAC1B,IAAI,CAAC,sBAAsB,EAAE,uBAAuB,GAAG,kBAAkB,CAAC,CAI5E;AAED,UAAU,6CAA6C;IACrD,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,oBAAoB,CAAC,EAAE,kBAAkB,CAAC;IAC1C,oBAAoB,CAAC,EAAE,kBAAkB,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,uCAAuC,CACrD,MAAM,EAAE,6CAA6C,GACpD,IAAI,CACL,sBAAsB,EACtB,uBAAuB,GAAG,cAAc,GAAG,cAAc,GAAG,kBAAkB,CAC/E,CAiHA"}
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "4.
|
|
1
|
+
export declare const VERSION = "4.14.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@account-kit/infra",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.14.0",
|
|
4
4
|
"description": "adapters for @aa-sdk/core for interacting with alchemy services",
|
|
5
5
|
"author": "Alchemy",
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"vitest": "^2.0.4"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@aa-sdk/core": "^4.
|
|
49
|
-
"@account-kit/logging": "^4.
|
|
48
|
+
"@aa-sdk/core": "^4.14.0",
|
|
49
|
+
"@account-kit/logging": "^4.14.0",
|
|
50
50
|
"eventemitter3": "^5.0.1",
|
|
51
51
|
"zod": "^3.22.4"
|
|
52
52
|
},
|
|
@@ -65,7 +65,7 @@
|
|
|
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": "9230c8f9c9af7a9a7d90538ef6ec42dcca1c39db",
|
|
69
69
|
"optionalDependencies": {
|
|
70
70
|
"alchemy-sdk": "^3.0.0"
|
|
71
71
|
}
|
package/src/actions/types.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type {
|
|
2
|
+
UserOperationStruct,
|
|
3
|
+
UserOperationRequest,
|
|
4
|
+
UserOperationOverrides,
|
|
5
|
+
EntryPointVersion,
|
|
6
|
+
} from "@aa-sdk/core";
|
|
7
|
+
import type { Address, Hash, Hex } from "viem";
|
|
3
8
|
|
|
4
9
|
export enum SimulateAssetType {
|
|
5
10
|
NATIVE = "NATIVE",
|
|
@@ -47,3 +52,37 @@ export interface SimulateAssetChange {
|
|
|
47
52
|
name?: string;
|
|
48
53
|
logo?: string;
|
|
49
54
|
}
|
|
55
|
+
|
|
56
|
+
export type RequestGasAndPaymasterAndDataRequest = [
|
|
57
|
+
{
|
|
58
|
+
policyId: string | string[];
|
|
59
|
+
entryPoint: Address;
|
|
60
|
+
dummySignature: Hex;
|
|
61
|
+
userOperation: UserOperationRequest;
|
|
62
|
+
overrides?: UserOperationOverrides;
|
|
63
|
+
}
|
|
64
|
+
];
|
|
65
|
+
|
|
66
|
+
export type RequestGasAndPaymasterAndDataResponse<
|
|
67
|
+
TEntryPointVersion extends EntryPointVersion = EntryPointVersion
|
|
68
|
+
> = Pick<
|
|
69
|
+
UserOperationRequest,
|
|
70
|
+
| "callGasLimit"
|
|
71
|
+
| "preVerificationGas"
|
|
72
|
+
| "verificationGasLimit"
|
|
73
|
+
| "maxFeePerGas"
|
|
74
|
+
| "maxPriorityFeePerGas"
|
|
75
|
+
> &
|
|
76
|
+
(TEntryPointVersion extends "0.6.0"
|
|
77
|
+
? {
|
|
78
|
+
paymasterAndData: UserOperationRequest<"0.6.0">["paymasterAndData"];
|
|
79
|
+
}
|
|
80
|
+
: TEntryPointVersion extends "0.7.0"
|
|
81
|
+
? Pick<
|
|
82
|
+
UserOperationRequest<"0.7.0">,
|
|
83
|
+
| "paymaster"
|
|
84
|
+
| "paymasterData"
|
|
85
|
+
| "paymasterVerificationGasLimit"
|
|
86
|
+
| "paymasterPostOpGasLimit"
|
|
87
|
+
>
|
|
88
|
+
: never);
|
package/src/alchemyTransport.ts
CHANGED
|
@@ -15,7 +15,7 @@ import { type Chain } from "viem";
|
|
|
15
15
|
import type { AlchemyTransport } from "../alchemyTransport.js";
|
|
16
16
|
import { getDefaultUserOperationFeeOptions } from "../defaults.js";
|
|
17
17
|
import { alchemyFeeEstimator } from "../middleware/feeEstimator.js";
|
|
18
|
-
import {
|
|
18
|
+
import { alchemyGasAndPaymasterAndDataMiddleware } from "../middleware/gasManager.js";
|
|
19
19
|
import { alchemyUserOperationSimulator } from "../middleware/userOperationSimulator.js";
|
|
20
20
|
import {
|
|
21
21
|
alchemyActions,
|
|
@@ -41,7 +41,7 @@ export type AlchemySmartAccountClientConfig<
|
|
|
41
41
|
> = {
|
|
42
42
|
account?: account;
|
|
43
43
|
useSimulation?: boolean;
|
|
44
|
-
policyId?: string;
|
|
44
|
+
policyId?: string | string[];
|
|
45
45
|
} & Pick<
|
|
46
46
|
SmartAccountClientConfig<AlchemyTransport, chain, account, context>,
|
|
47
47
|
| "customMiddleware"
|
|
@@ -153,18 +153,25 @@ export function createAlchemySmartAccountClient({
|
|
|
153
153
|
...opts,
|
|
154
154
|
feeOptions,
|
|
155
155
|
},
|
|
156
|
+
feeEstimator: feeEstimator ?? alchemyFeeEstimator(transport),
|
|
157
|
+
gasEstimator,
|
|
156
158
|
customMiddleware: async (struct, args) => {
|
|
157
159
|
if (isSmartAccountWithSigner(args.account)) {
|
|
158
160
|
transport.updateHeaders(getSignerTypeHeader(args.account));
|
|
159
161
|
}
|
|
160
162
|
return customMiddleware ? customMiddleware(struct, args) : struct;
|
|
161
163
|
},
|
|
162
|
-
|
|
164
|
+
...(policyId
|
|
165
|
+
? alchemyGasAndPaymasterAndDataMiddleware({
|
|
166
|
+
policyId,
|
|
167
|
+
transport,
|
|
168
|
+
gasEstimatorOverride: gasEstimator,
|
|
169
|
+
feeEstimatorOverride: feeEstimator,
|
|
170
|
+
})
|
|
171
|
+
: {}),
|
|
163
172
|
userOperationSimulator: useSimulation
|
|
164
173
|
? alchemyUserOperationSimulator(transport)
|
|
165
174
|
: undefined,
|
|
166
|
-
gasEstimator,
|
|
167
|
-
...(policyId && alchemyGasManagerMiddleware(policyId)),
|
|
168
175
|
signUserOperation,
|
|
169
176
|
}).extend(alchemyActions);
|
|
170
177
|
|
package/src/client/types.ts
CHANGED
|
@@ -6,6 +6,8 @@ import {
|
|
|
6
6
|
import type {
|
|
7
7
|
SimulateUserOperationAssetChangesRequest,
|
|
8
8
|
SimulateUserOperationAssetChangesResponse,
|
|
9
|
+
RequestGasAndPaymasterAndDataRequest,
|
|
10
|
+
RequestGasAndPaymasterAndDataResponse,
|
|
9
11
|
} from "../actions/types";
|
|
10
12
|
import type { AlchemyTransport } from "../alchemyTransport";
|
|
11
13
|
|
|
@@ -20,7 +22,12 @@ export type AlchemyRpcSchema = [
|
|
|
20
22
|
Parameters: [];
|
|
21
23
|
ReturnType: UserOperationRequest["maxPriorityFeePerGas"];
|
|
22
24
|
},
|
|
23
|
-
...Erc7677RpcSchema<{ policyId: string }
|
|
25
|
+
...Erc7677RpcSchema<{ policyId: string }>,
|
|
26
|
+
{
|
|
27
|
+
Method: "alchemy_requestGasAndPaymasterAndData";
|
|
28
|
+
Parameters: RequestGasAndPaymasterAndDataRequest;
|
|
29
|
+
ReturnType: RequestGasAndPaymasterAndDataResponse;
|
|
30
|
+
}
|
|
24
31
|
];
|
|
25
32
|
|
|
26
33
|
export type ClientWithAlchemyMethods = BundlerClient<AlchemyTransport> & {
|
|
@@ -35,5 +42,10 @@ export type ClientWithAlchemyMethods = BundlerClient<AlchemyTransport> & {
|
|
|
35
42
|
method: "rundler_maxPriorityFeePerGas";
|
|
36
43
|
params: [];
|
|
37
44
|
}): Promise<UserOperationRequest["maxPriorityFeePerGas"]>;
|
|
45
|
+
|
|
46
|
+
request(args: {
|
|
47
|
+
method: "alchemy_requestGasAndPaymasterAndData";
|
|
48
|
+
params: RequestGasAndPaymasterAndDataRequest;
|
|
49
|
+
}): Promise<RequestGasAndPaymasterAndDataResponse>;
|
|
38
50
|
}["request"];
|
|
39
51
|
};
|
package/src/gas-manager.ts
CHANGED
|
@@ -38,6 +38,8 @@ export const AlchemyPaymasterAddressV1 =
|
|
|
38
38
|
*
|
|
39
39
|
* @param {Chain} chain The chain for which the paymaster address is required
|
|
40
40
|
* @returns {Address} The Alchemy paymaster address corresponding to the specified chain
|
|
41
|
+
*
|
|
42
|
+
* @deprecated This chain list in this function is no longer maintained since the ERC-7677 middleware is typically used to resolve the paymaster address
|
|
41
43
|
*/
|
|
42
44
|
export const getAlchemyPaymasterAddress = (chain: Chain): Address => {
|
|
43
45
|
switch (chain.id) {
|
package/src/index.ts
CHANGED
|
@@ -55,6 +55,9 @@ export { getDefaultUserOperationFeeOptions } from "./defaults.js";
|
|
|
55
55
|
export { getAlchemyPaymasterAddress } from "./gas-manager.js";
|
|
56
56
|
export { alchemyFeeEstimator } from "./middleware/feeEstimator.js";
|
|
57
57
|
export type * from "./middleware/gasManager.js";
|
|
58
|
-
export {
|
|
58
|
+
export {
|
|
59
|
+
alchemyGasManagerMiddleware,
|
|
60
|
+
alchemyGasAndPaymasterAndDataMiddleware,
|
|
61
|
+
} from "./middleware/gasManager.js";
|
|
59
62
|
export { alchemyUserOperationSimulator } from "./middleware/userOperationSimulator.js";
|
|
60
63
|
export type * from "./schema.js";
|
|
@@ -1,8 +1,32 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type {
|
|
2
|
+
ClientMiddlewareConfig,
|
|
3
|
+
ClientMiddlewareFn,
|
|
4
|
+
EntryPointVersion,
|
|
5
|
+
Multiplier,
|
|
6
|
+
UserOperationFeeOptions,
|
|
7
|
+
UserOperationOverrides,
|
|
8
|
+
UserOperationRequest,
|
|
9
|
+
} from "@aa-sdk/core";
|
|
10
|
+
import {
|
|
11
|
+
bypassPaymasterAndData,
|
|
12
|
+
ChainNotFoundError,
|
|
13
|
+
deepHexlify,
|
|
14
|
+
defaultGasEstimator,
|
|
15
|
+
erc7677Middleware,
|
|
16
|
+
filterUndefined,
|
|
17
|
+
isBigNumberish,
|
|
18
|
+
isMultiplier,
|
|
19
|
+
noopMiddleware,
|
|
20
|
+
resolveProperties,
|
|
21
|
+
} from "@aa-sdk/core";
|
|
22
|
+
import { fromHex, isHex, type Hex } from "viem";
|
|
23
|
+
import type { AlchemySmartAccountClient } from "../client/smartAccountClient.js";
|
|
24
|
+
import type { AlchemyTransport } from "../alchemyTransport.js";
|
|
25
|
+
import { alchemyFeeEstimator } from "./feeEstimator.js";
|
|
3
26
|
|
|
4
27
|
/**
|
|
5
|
-
* Paymaster middleware factory that uses Alchemy's Gas Manager for sponsoring
|
|
28
|
+
* Paymaster middleware factory that uses Alchemy's Gas Manager for sponsoring
|
|
29
|
+
* transactions. Adheres to the ERC-7677 standardized communication protocol.
|
|
6
30
|
*
|
|
7
31
|
* @example
|
|
8
32
|
* ```ts
|
|
@@ -16,13 +40,217 @@ import { erc7677Middleware } from "@aa-sdk/core";
|
|
|
16
40
|
* });
|
|
17
41
|
* ```
|
|
18
42
|
*
|
|
19
|
-
* @param {string} policyId the policyId for Alchemy's gas manager
|
|
43
|
+
* @param {string | string[]} policyId the policyId (or list of policyIds) for Alchemy's gas manager
|
|
20
44
|
* @returns {Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "paymasterAndData">} partial client middleware configuration containing `dummyPaymasterAndData` and `paymasterAndData`
|
|
21
45
|
*/
|
|
22
46
|
export function alchemyGasManagerMiddleware(
|
|
23
|
-
policyId: string
|
|
47
|
+
policyId: string | string[]
|
|
24
48
|
): Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "paymasterAndData"> {
|
|
25
|
-
return erc7677Middleware<{ policyId: string }>({
|
|
49
|
+
return erc7677Middleware<{ policyId: string | string[] }>({
|
|
26
50
|
context: { policyId: policyId },
|
|
27
51
|
});
|
|
28
52
|
}
|
|
53
|
+
|
|
54
|
+
interface AlchemyGasAndPaymasterAndDataMiddlewareParams {
|
|
55
|
+
policyId: string | string[];
|
|
56
|
+
transport: AlchemyTransport;
|
|
57
|
+
gasEstimatorOverride?: ClientMiddlewareFn;
|
|
58
|
+
feeEstimatorOverride?: ClientMiddlewareFn;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Paymaster middleware factory that uses Alchemy's Gas Manager for sponsoring
|
|
63
|
+
* transactions. Uses Alchemy's custom `alchemy_requestGasAndPaymasterAndData`
|
|
64
|
+
* method instead of conforming to the standard ERC-7677 interface. Note that
|
|
65
|
+
* if you use `createAlchemySmartAccountClient`, this middleware is already
|
|
66
|
+
* used by default and you do not need to manually include it.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts twoslash
|
|
70
|
+
* import { sepolia, alchemy, alchemyGasAndPaymasterAndDataMiddleware } from "@account-kit/infra";
|
|
71
|
+
* import { createSmartAccountClient } from "@aa-sdk/core";
|
|
72
|
+
*
|
|
73
|
+
* const client = createSmartAccountClient({
|
|
74
|
+
* transport: alchemy({ apiKey: "your-api-key" }),
|
|
75
|
+
* chain: sepolia,
|
|
76
|
+
* ...alchemyGasAndPaymasterAndDataMiddleware({
|
|
77
|
+
* policyId: "policyId",
|
|
78
|
+
* transport: alchemy({ apiKey: "your-api-key" }),
|
|
79
|
+
* })
|
|
80
|
+
* });
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @param {AlchemyGasAndPaymasterAndDataMiddlewareParams} params configuration params
|
|
84
|
+
* @param {AlchemyGasAndPaymasterAndDataMiddlewareParams.policyId} params.policyId the policyId for Alchemy's gas manager
|
|
85
|
+
* @param {AlchemyGasAndPaymasterAndDataMiddlewareParams.transport} params.transport fallback transport to use for fee estimation when not using the paymaster
|
|
86
|
+
* @param {AlchemyGasAndPaymasterAndDataMiddlewareParams.gasEstimatorOverride} params.gasEstimatorOverride custom gas estimator middleware
|
|
87
|
+
* @param {AlchemyGasAndPaymasterAndDataMiddlewareParams.feeEstimatorOverride} params.feeEstimatorOverride custom fee estimator middleware
|
|
88
|
+
* @returns {Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "paymasterAndData">} partial client middleware configuration containing `dummyPaymasterAndData` and `paymasterAndData`
|
|
89
|
+
*/
|
|
90
|
+
export function alchemyGasAndPaymasterAndDataMiddleware(
|
|
91
|
+
params: AlchemyGasAndPaymasterAndDataMiddlewareParams
|
|
92
|
+
): Pick<
|
|
93
|
+
ClientMiddlewareConfig,
|
|
94
|
+
"dummyPaymasterAndData" | "feeEstimator" | "gasEstimator" | "paymasterAndData"
|
|
95
|
+
> {
|
|
96
|
+
const { policyId, transport, gasEstimatorOverride, feeEstimatorOverride } =
|
|
97
|
+
params;
|
|
98
|
+
return {
|
|
99
|
+
dummyPaymasterAndData: async (uo, args) => {
|
|
100
|
+
if (
|
|
101
|
+
// No reason to generate dummy data if we are bypassing the paymaster.
|
|
102
|
+
bypassPaymasterAndData(args.overrides) ||
|
|
103
|
+
// When using alchemy_requestGasAndPaymasterAndData, there is generally no reason to generate dummy
|
|
104
|
+
// data. However, if the gas/feeEstimator is overriden, then this option should be enabled.
|
|
105
|
+
!(gasEstimatorOverride || feeEstimatorOverride)
|
|
106
|
+
) {
|
|
107
|
+
return noopMiddleware(uo, args);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Fall back to the default 7677 dummyPaymasterAndData middleware.
|
|
111
|
+
return alchemyGasManagerMiddleware(policyId).dummyPaymasterAndData!(
|
|
112
|
+
uo,
|
|
113
|
+
args
|
|
114
|
+
);
|
|
115
|
+
},
|
|
116
|
+
feeEstimator: (uo, args) => {
|
|
117
|
+
return feeEstimatorOverride
|
|
118
|
+
? feeEstimatorOverride(uo, args)
|
|
119
|
+
: bypassPaymasterAndData(args.overrides)
|
|
120
|
+
? alchemyFeeEstimator(transport)(uo, args)
|
|
121
|
+
: noopMiddleware(uo, args);
|
|
122
|
+
},
|
|
123
|
+
gasEstimator: (uo, args) => {
|
|
124
|
+
return gasEstimatorOverride
|
|
125
|
+
? gasEstimatorOverride(uo, args)
|
|
126
|
+
: bypassPaymasterAndData(args.overrides)
|
|
127
|
+
? defaultGasEstimator(args.client)(uo, args)
|
|
128
|
+
: noopMiddleware(uo, args);
|
|
129
|
+
},
|
|
130
|
+
paymasterAndData: async (
|
|
131
|
+
uo,
|
|
132
|
+
{ account, client, feeOptions, overrides: overrides_ }
|
|
133
|
+
) => {
|
|
134
|
+
if (!client.chain) {
|
|
135
|
+
throw new ChainNotFoundError();
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const userOp = deepHexlify(await resolveProperties(uo));
|
|
139
|
+
|
|
140
|
+
const overrides: UserOperationOverrides = filterUndefined({
|
|
141
|
+
maxFeePerGas: overrideField(
|
|
142
|
+
"maxFeePerGas",
|
|
143
|
+
overrides_ as UserOperationOverrides,
|
|
144
|
+
feeOptions,
|
|
145
|
+
userOp
|
|
146
|
+
),
|
|
147
|
+
maxPriorityFeePerGas: overrideField(
|
|
148
|
+
"maxPriorityFeePerGas",
|
|
149
|
+
overrides_ as UserOperationOverrides,
|
|
150
|
+
feeOptions,
|
|
151
|
+
userOp
|
|
152
|
+
),
|
|
153
|
+
callGasLimit: overrideField(
|
|
154
|
+
"callGasLimit",
|
|
155
|
+
overrides_ as UserOperationOverrides,
|
|
156
|
+
feeOptions,
|
|
157
|
+
userOp
|
|
158
|
+
),
|
|
159
|
+
verificationGasLimit: overrideField(
|
|
160
|
+
"verificationGasLimit",
|
|
161
|
+
overrides_ as UserOperationOverrides,
|
|
162
|
+
feeOptions,
|
|
163
|
+
userOp
|
|
164
|
+
),
|
|
165
|
+
preVerificationGas: overrideField(
|
|
166
|
+
"preVerificationGas",
|
|
167
|
+
overrides_ as UserOperationOverrides,
|
|
168
|
+
feeOptions,
|
|
169
|
+
userOp
|
|
170
|
+
),
|
|
171
|
+
...(account.getEntryPoint().version === "0.7.0"
|
|
172
|
+
? {
|
|
173
|
+
paymasterVerificationGasLimit: overrideField<"0.7.0">(
|
|
174
|
+
"paymasterVerificationGasLimit",
|
|
175
|
+
overrides_ as UserOperationOverrides<"0.7.0">,
|
|
176
|
+
feeOptions,
|
|
177
|
+
userOp
|
|
178
|
+
),
|
|
179
|
+
paymasterPostOpGasLimit: overrideField<"0.7.0">(
|
|
180
|
+
"paymasterPostOpGasLimit",
|
|
181
|
+
overrides_ as UserOperationOverrides<"0.7.0">,
|
|
182
|
+
feeOptions,
|
|
183
|
+
userOp
|
|
184
|
+
),
|
|
185
|
+
}
|
|
186
|
+
: {}),
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
const result = await (client as AlchemySmartAccountClient).request({
|
|
190
|
+
method: "alchemy_requestGasAndPaymasterAndData",
|
|
191
|
+
params: [
|
|
192
|
+
{
|
|
193
|
+
policyId,
|
|
194
|
+
entryPoint: account.getEntryPoint().address,
|
|
195
|
+
userOperation: userOp,
|
|
196
|
+
dummySignature: await account.getDummySignature(),
|
|
197
|
+
overrides,
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
return {
|
|
203
|
+
...uo,
|
|
204
|
+
...result,
|
|
205
|
+
};
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Utility function to override a field in the user operation request with the overrides or fee options
|
|
212
|
+
*
|
|
213
|
+
* @template {EntryPointVersion} TEntryPointVersion
|
|
214
|
+
* @param {keyof UserOperationFeeOptions<TEntryPointVersion>} field the field to override
|
|
215
|
+
* @param {UserOperationOverrides<TEntryPointVersion> | undefined} overrides the overrides object
|
|
216
|
+
* @param {UserOperationFeeOptions<TEntryPointVersion> | undefined} feeOptions the fee options object from the client
|
|
217
|
+
* @param {UserOperationRequest<TEntryPointVersion>} userOperation the user operation request
|
|
218
|
+
* @returns {Hex | Multiplier | undefined} the overridden field value
|
|
219
|
+
*/
|
|
220
|
+
const overrideField = <
|
|
221
|
+
TEntryPointVersion extends EntryPointVersion = EntryPointVersion
|
|
222
|
+
>(
|
|
223
|
+
field: keyof UserOperationFeeOptions<TEntryPointVersion>,
|
|
224
|
+
overrides: UserOperationOverrides<TEntryPointVersion> | undefined,
|
|
225
|
+
feeOptions: UserOperationFeeOptions<TEntryPointVersion> | undefined,
|
|
226
|
+
userOperation: UserOperationRequest<TEntryPointVersion>
|
|
227
|
+
): Hex | Multiplier | undefined => {
|
|
228
|
+
let _field = field as keyof UserOperationOverrides<TEntryPointVersion>;
|
|
229
|
+
|
|
230
|
+
if (overrides?.[_field] != null) {
|
|
231
|
+
// one-off absolute override
|
|
232
|
+
if (isBigNumberish(overrides[_field])) {
|
|
233
|
+
return deepHexlify(overrides[_field]);
|
|
234
|
+
}
|
|
235
|
+
// one-off multiplier overrides
|
|
236
|
+
else {
|
|
237
|
+
return {
|
|
238
|
+
multiplier: Number((overrides[_field] as Multiplier).multiplier),
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// provider level fee options with multiplier
|
|
244
|
+
if (isMultiplier(feeOptions?.[field])) {
|
|
245
|
+
return {
|
|
246
|
+
multiplier: Number((feeOptions![field] as Multiplier).multiplier),
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
const userOpField =
|
|
251
|
+
userOperation[field as keyof UserOperationRequest<TEntryPointVersion>];
|
|
252
|
+
if (isHex(userOpField) && fromHex(userOpField as Hex, "bigint") > 0n) {
|
|
253
|
+
return userOpField;
|
|
254
|
+
}
|
|
255
|
+
return undefined;
|
|
256
|
+
};
|
package/src/version.ts
CHANGED