@account-kit/infra 4.0.0-alpha.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.
Files changed (193) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/actions/simulateUserOperationChanges.d.ts +5 -0
  3. package/dist/cjs/actions/simulateUserOperationChanges.js +24 -0
  4. package/dist/cjs/actions/simulateUserOperationChanges.js.map +1 -0
  5. package/dist/cjs/actions/types.d.ts +39 -0
  6. package/dist/cjs/actions/types.js +17 -0
  7. package/dist/cjs/actions/types.js.map +1 -0
  8. package/dist/cjs/chains.d.ts +5 -0
  9. package/dist/cjs/chains.js +16 -0
  10. package/dist/cjs/chains.js.map +1 -0
  11. package/dist/cjs/client/decorators/alchemyEnhancedApis.d.ts +14 -0
  12. package/dist/cjs/client/decorators/alchemyEnhancedApis.js +26 -0
  13. package/dist/cjs/client/decorators/alchemyEnhancedApis.js.map +1 -0
  14. package/dist/cjs/client/decorators/smartAccount.d.ts +7 -0
  15. package/dist/cjs/client/decorators/smartAccount.js +9 -0
  16. package/dist/cjs/client/decorators/smartAccount.js.map +1 -0
  17. package/dist/cjs/client/internal/smartAccountClientFromRpc.d.ts +11 -0
  18. package/dist/cjs/client/internal/smartAccountClientFromRpc.js +55 -0
  19. package/dist/cjs/client/internal/smartAccountClientFromRpc.js.map +1 -0
  20. package/dist/cjs/client/isAlchemySmartAccountClient.d.ts +5539 -0
  21. package/dist/cjs/client/isAlchemySmartAccountClient.js +9 -0
  22. package/dist/cjs/client/isAlchemySmartAccountClient.js.map +1 -0
  23. package/dist/cjs/client/rpcClient.d.ts +8 -0
  24. package/dist/cjs/client/rpcClient.js +36 -0
  25. package/dist/cjs/client/rpcClient.js.map +1 -0
  26. package/dist/cjs/client/smartAccountClient.d.ts +18 -0
  27. package/dist/cjs/client/smartAccountClient.js +32 -0
  28. package/dist/cjs/client/smartAccountClient.js.map +1 -0
  29. package/dist/cjs/client/types.d.ts +76 -0
  30. package/dist/cjs/client/types.js +3 -0
  31. package/dist/cjs/client/types.js.map +1 -0
  32. package/dist/cjs/defaults.d.ts +3 -0
  33. package/dist/cjs/defaults.js +23 -0
  34. package/dist/cjs/defaults.js.map +1 -0
  35. package/dist/cjs/errors/base.d.ts +4 -0
  36. package/dist/cjs/errors/base.js +18 -0
  37. package/dist/cjs/errors/base.js.map +1 -0
  38. package/dist/cjs/errors/rpcUrl.d.ts +10 -0
  39. package/dist/cjs/errors/rpcUrl.js +26 -0
  40. package/dist/cjs/errors/rpcUrl.js.map +1 -0
  41. package/dist/cjs/gas-manager.d.ts +6 -0
  42. package/dist/cjs/gas-manager.js +35 -0
  43. package/dist/cjs/gas-manager.js.map +1 -0
  44. package/dist/cjs/index.d.ts +24 -0
  45. package/dist/cjs/index.js +32 -0
  46. package/dist/cjs/index.js.map +1 -0
  47. package/dist/cjs/middleware/feeEstimator.d.ts +3 -0
  48. package/dist/cjs/middleware/feeEstimator.js +26 -0
  49. package/dist/cjs/middleware/feeEstimator.js.map +1 -0
  50. package/dist/cjs/middleware/gasManager.d.ts +29 -0
  51. package/dist/cjs/middleware/gasManager.js +148 -0
  52. package/dist/cjs/middleware/gasManager.js.map +1 -0
  53. package/dist/cjs/middleware/userOperationSimulator.d.ts +3 -0
  54. package/dist/cjs/middleware/userOperationSimulator.js +21 -0
  55. package/dist/cjs/middleware/userOperationSimulator.js.map +1 -0
  56. package/dist/cjs/package.json +1 -0
  57. package/dist/cjs/schema.d.ts +396 -0
  58. package/dist/cjs/schema.js +26 -0
  59. package/dist/cjs/schema.js.map +1 -0
  60. package/dist/cjs/type.d.ts +3 -0
  61. package/dist/cjs/type.js +3 -0
  62. package/dist/cjs/type.js.map +1 -0
  63. package/dist/cjs/version.d.ts +1 -0
  64. package/dist/cjs/version.js +5 -0
  65. package/dist/cjs/version.js.map +1 -0
  66. package/dist/esm/actions/simulateUserOperationChanges.d.ts +5 -0
  67. package/dist/esm/actions/simulateUserOperationChanges.js +20 -0
  68. package/dist/esm/actions/simulateUserOperationChanges.js.map +1 -0
  69. package/dist/esm/actions/types.d.ts +39 -0
  70. package/dist/esm/actions/types.js +14 -0
  71. package/dist/esm/actions/types.js.map +1 -0
  72. package/dist/esm/chains.d.ts +5 -0
  73. package/dist/esm/chains.js +12 -0
  74. package/dist/esm/chains.js.map +1 -0
  75. package/dist/esm/client/decorators/alchemyEnhancedApis.d.ts +14 -0
  76. package/dist/esm/client/decorators/alchemyEnhancedApis.js +22 -0
  77. package/dist/esm/client/decorators/alchemyEnhancedApis.js.map +1 -0
  78. package/dist/esm/client/decorators/smartAccount.d.ts +7 -0
  79. package/dist/esm/client/decorators/smartAccount.js +5 -0
  80. package/dist/esm/client/decorators/smartAccount.js.map +1 -0
  81. package/dist/esm/client/internal/smartAccountClientFromRpc.d.ts +11 -0
  82. package/dist/esm/client/internal/smartAccountClientFromRpc.js +50 -0
  83. package/dist/esm/client/internal/smartAccountClientFromRpc.js.map +1 -0
  84. package/dist/esm/client/isAlchemySmartAccountClient.d.ts +5539 -0
  85. package/dist/esm/client/isAlchemySmartAccountClient.js +5 -0
  86. package/dist/esm/client/isAlchemySmartAccountClient.js.map +1 -0
  87. package/dist/esm/client/rpcClient.d.ts +8 -0
  88. package/dist/esm/client/rpcClient.js +32 -0
  89. package/dist/esm/client/rpcClient.js.map +1 -0
  90. package/dist/esm/client/smartAccountClient.d.ts +18 -0
  91. package/dist/esm/client/smartAccountClient.js +31 -0
  92. package/dist/esm/client/smartAccountClient.js.map +1 -0
  93. package/dist/esm/client/types.d.ts +76 -0
  94. package/dist/esm/client/types.js +2 -0
  95. package/dist/esm/client/types.js.map +1 -0
  96. package/dist/esm/defaults.d.ts +3 -0
  97. package/dist/esm/defaults.js +19 -0
  98. package/dist/esm/defaults.js.map +1 -0
  99. package/dist/esm/errors/base.d.ts +4 -0
  100. package/dist/esm/errors/base.js +14 -0
  101. package/dist/esm/errors/base.js.map +1 -0
  102. package/dist/esm/errors/rpcUrl.d.ts +10 -0
  103. package/dist/esm/errors/rpcUrl.js +24 -0
  104. package/dist/esm/errors/rpcUrl.js.map +1 -0
  105. package/dist/esm/gas-manager.d.ts +6 -0
  106. package/dist/esm/gas-manager.js +31 -0
  107. package/dist/esm/gas-manager.js.map +1 -0
  108. package/dist/esm/index.d.ts +24 -0
  109. package/dist/esm/index.js +15 -0
  110. package/dist/esm/index.js.map +1 -0
  111. package/dist/esm/middleware/feeEstimator.d.ts +3 -0
  112. package/dist/esm/middleware/feeEstimator.js +22 -0
  113. package/dist/esm/middleware/feeEstimator.js.map +1 -0
  114. package/dist/esm/middleware/gasManager.d.ts +29 -0
  115. package/dist/esm/middleware/gasManager.js +144 -0
  116. package/dist/esm/middleware/gasManager.js.map +1 -0
  117. package/dist/esm/middleware/userOperationSimulator.d.ts +3 -0
  118. package/dist/esm/middleware/userOperationSimulator.js +17 -0
  119. package/dist/esm/middleware/userOperationSimulator.js.map +1 -0
  120. package/dist/esm/package.json +1 -0
  121. package/dist/esm/schema.d.ts +396 -0
  122. package/dist/esm/schema.js +20 -0
  123. package/dist/esm/schema.js.map +1 -0
  124. package/dist/esm/type.d.ts +3 -0
  125. package/dist/esm/type.js +2 -0
  126. package/dist/esm/type.js.map +1 -0
  127. package/dist/esm/version.d.ts +1 -0
  128. package/dist/esm/version.js +2 -0
  129. package/dist/esm/version.js.map +1 -0
  130. package/dist/types/actions/simulateUserOperationChanges.d.ts +6 -0
  131. package/dist/types/actions/simulateUserOperationChanges.d.ts.map +1 -0
  132. package/dist/types/actions/types.d.ts +44 -0
  133. package/dist/types/actions/types.d.ts.map +1 -0
  134. package/dist/types/chains.d.ts +6 -0
  135. package/dist/types/chains.d.ts.map +1 -0
  136. package/dist/types/client/decorators/alchemyEnhancedApis.d.ts +15 -0
  137. package/dist/types/client/decorators/alchemyEnhancedApis.d.ts.map +1 -0
  138. package/dist/types/client/decorators/smartAccount.d.ts +8 -0
  139. package/dist/types/client/decorators/smartAccount.d.ts.map +1 -0
  140. package/dist/types/client/internal/smartAccountClientFromRpc.d.ts +19 -0
  141. package/dist/types/client/internal/smartAccountClientFromRpc.d.ts.map +1 -0
  142. package/dist/types/client/isAlchemySmartAccountClient.d.ts +5540 -0
  143. package/dist/types/client/isAlchemySmartAccountClient.d.ts.map +1 -0
  144. package/dist/types/client/rpcClient.d.ts +9 -0
  145. package/dist/types/client/rpcClient.d.ts.map +1 -0
  146. package/dist/types/client/smartAccountClient.d.ts +19 -0
  147. package/dist/types/client/smartAccountClient.d.ts.map +1 -0
  148. package/dist/types/client/types.d.ts +77 -0
  149. package/dist/types/client/types.d.ts.map +1 -0
  150. package/dist/types/defaults.d.ts +4 -0
  151. package/dist/types/defaults.d.ts.map +1 -0
  152. package/dist/types/errors/base.d.ts +5 -0
  153. package/dist/types/errors/base.d.ts.map +1 -0
  154. package/dist/types/errors/rpcUrl.d.ts +11 -0
  155. package/dist/types/errors/rpcUrl.d.ts.map +1 -0
  156. package/dist/types/gas-manager.d.ts +7 -0
  157. package/dist/types/gas-manager.d.ts.map +1 -0
  158. package/dist/types/index.d.ts +25 -0
  159. package/dist/types/index.d.ts.map +1 -0
  160. package/dist/types/middleware/feeEstimator.d.ts +4 -0
  161. package/dist/types/middleware/feeEstimator.d.ts.map +1 -0
  162. package/dist/types/middleware/gasManager.d.ts +94 -0
  163. package/dist/types/middleware/gasManager.d.ts.map +1 -0
  164. package/dist/types/middleware/userOperationSimulator.d.ts +4 -0
  165. package/dist/types/middleware/userOperationSimulator.d.ts.map +1 -0
  166. package/dist/types/schema.d.ts +397 -0
  167. package/dist/types/schema.d.ts.map +1 -0
  168. package/dist/types/type.d.ts +4 -0
  169. package/dist/types/type.d.ts.map +1 -0
  170. package/dist/types/version.d.ts +2 -0
  171. package/dist/types/version.d.ts.map +1 -0
  172. package/package.json +75 -0
  173. package/src/actions/simulateUserOperationChanges.ts +49 -0
  174. package/src/actions/types.ts +49 -0
  175. package/src/chains.ts +19 -0
  176. package/src/client/decorators/alchemyEnhancedApis.ts +54 -0
  177. package/src/client/decorators/smartAccount.ts +37 -0
  178. package/src/client/internal/smartAccountClientFromRpc.ts +121 -0
  179. package/src/client/isAlchemySmartAccountClient.ts +19 -0
  180. package/src/client/rpcClient.ts +50 -0
  181. package/src/client/smartAccountClient.ts +153 -0
  182. package/src/client/types.ts +89 -0
  183. package/src/defaults.ts +34 -0
  184. package/src/errors/base.ts +7 -0
  185. package/src/errors/rpcUrl.ts +20 -0
  186. package/src/gas-manager.ts +53 -0
  187. package/src/index.ts +24 -0
  188. package/src/middleware/feeEstimator.ts +40 -0
  189. package/src/middleware/gasManager.ts +432 -0
  190. package/src/middleware/userOperationSimulator.ts +26 -0
  191. package/src/schema.ts +33 -0
  192. package/src/type.ts +4 -0
  193. package/src/version.ts +3 -0
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.alchemyGasManagerMiddleware = void 0;
4
+ const core_1 = require("@aa-sdk/core");
5
+ const viem_1 = require("viem");
6
+ const gas_manager_js_1 = require("../gas-manager.js");
7
+ const feeEstimator_js_1 = require("./feeEstimator.js");
8
+ const dummyPaymasterAndData = (client, config) => () => {
9
+ const paymaster = config.paymasterAddress ?? (0, gas_manager_js_1.getAlchemyPaymasterAddress)(client.chain);
10
+ const paymasterData = config.dummyData ??
11
+ "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c";
12
+ return (0, viem_1.concat)([paymaster, paymasterData]);
13
+ };
14
+ function alchemyGasManagerMiddleware(client, config) {
15
+ const gasEstimationOptions = config.gasEstimationOptions;
16
+ const disableGasEstimation = gasEstimationOptions?.disableGasEstimation ?? false;
17
+ const fallbackFeeDataGetter = gasEstimationOptions?.fallbackFeeDataGetter ?? (0, feeEstimator_js_1.alchemyFeeEstimator)(client);
18
+ const fallbackGasEstimator = gasEstimationOptions?.fallbackGasEstimator ??
19
+ (0, core_1.defaultGasEstimator)(client);
20
+ return {
21
+ gasEstimator: disableGasEstimation
22
+ ? fallbackGasEstimator
23
+ : async (struct, { overrides, account, feeOptions }) => {
24
+ if ((0, core_1.bypassPaymasterAndDataEmptyHex)(overrides)) {
25
+ return {
26
+ ...struct,
27
+ ...(await fallbackGasEstimator(struct, {
28
+ overrides,
29
+ account,
30
+ feeOptions,
31
+ client,
32
+ })),
33
+ };
34
+ }
35
+ return struct;
36
+ },
37
+ feeEstimator: disableGasEstimation
38
+ ? fallbackFeeDataGetter
39
+ : async (struct, { overrides, account, feeOptions }) => {
40
+ let maxFeePerGas = await struct.maxFeePerGas;
41
+ let maxPriorityFeePerGas = await struct.maxPriorityFeePerGas;
42
+ if ((0, core_1.bypassPaymasterAndDataEmptyHex)(overrides)) {
43
+ const result = await fallbackFeeDataGetter(struct, {
44
+ overrides,
45
+ feeOptions,
46
+ account,
47
+ client,
48
+ });
49
+ maxFeePerGas = (await result.maxFeePerGas) ?? maxFeePerGas;
50
+ maxPriorityFeePerGas =
51
+ (await result.maxPriorityFeePerGas) ?? maxPriorityFeePerGas;
52
+ }
53
+ return {
54
+ ...struct,
55
+ maxFeePerGas,
56
+ maxPriorityFeePerGas,
57
+ };
58
+ },
59
+ paymasterAndData: disableGasEstimation
60
+ ? requestPaymasterAndData(client, config)
61
+ : requestGasAndPaymasterData(client, config),
62
+ };
63
+ }
64
+ exports.alchemyGasManagerMiddleware = alchemyGasManagerMiddleware;
65
+ const overrideField = (field, overrides, feeOptions, userOperation) => {
66
+ let _field = field;
67
+ if (overrides?.[_field] != null) {
68
+ if ((0, core_1.isBigNumberish)(overrides[_field])) {
69
+ return (0, core_1.deepHexlify)(overrides[_field]);
70
+ }
71
+ else {
72
+ return {
73
+ multiplier: Number(overrides[_field].multiplier),
74
+ };
75
+ }
76
+ }
77
+ if ((0, core_1.isMultiplier)(feeOptions?.[field])) {
78
+ return {
79
+ multiplier: Number(feeOptions[field].multiplier),
80
+ };
81
+ }
82
+ const userOpField = userOperation[field];
83
+ if ((0, viem_1.isHex)(userOpField) && (0, viem_1.fromHex)(userOpField, "bigint") > 0n) {
84
+ return userOpField;
85
+ }
86
+ return undefined;
87
+ };
88
+ function requestGasAndPaymasterData(client, config) {
89
+ return {
90
+ dummyPaymasterAndData: dummyPaymasterAndData(client, config),
91
+ paymasterAndData: async (struct, { overrides: overrides_, feeOptions, account }) => {
92
+ const userOperation = (0, core_1.deepHexlify)(await (0, core_1.resolveProperties)(struct));
93
+ const overrides = (0, core_1.filterUndefined)({
94
+ maxFeePerGas: overrideField("maxFeePerGas", overrides_, feeOptions, userOperation),
95
+ maxPriorityFeePerGas: overrideField("maxPriorityFeePerGas", overrides_, feeOptions, userOperation),
96
+ callGasLimit: overrideField("callGasLimit", overrides_, feeOptions, userOperation),
97
+ verificationGasLimit: overrideField("verificationGasLimit", overrides_, feeOptions, userOperation),
98
+ preVerificationGas: overrideField("preVerificationGas", overrides_, feeOptions, userOperation),
99
+ });
100
+ if (account.getEntryPoint().version === "0.7.0") {
101
+ const paymasterVerificationGasLimit = overrideField("paymasterVerificationGasLimit", overrides_, feeOptions, userOperation);
102
+ if (paymasterVerificationGasLimit != null) {
103
+ overrides.paymasterVerificationGasLimit = paymasterVerificationGasLimit;
104
+ }
105
+ const paymasterPostOpGasLimit = overrideField("paymasterPostOpGasLimit", overrides_, feeOptions, userOperation);
106
+ if (paymasterPostOpGasLimit != null) {
107
+ overrides.paymasterPostOpGasLimit = paymasterPostOpGasLimit;
108
+ }
109
+ }
110
+ const result = await client.request({
111
+ method: "alchemy_requestGasAndPaymasterAndData",
112
+ params: [
113
+ {
114
+ policyId: config.policyId,
115
+ entryPoint: account.getEntryPoint().address,
116
+ userOperation,
117
+ dummySignature: userOperation.signature,
118
+ overrides,
119
+ },
120
+ ],
121
+ });
122
+ return {
123
+ ...struct,
124
+ ...result,
125
+ };
126
+ },
127
+ };
128
+ }
129
+ const requestPaymasterAndData = (client, config) => ({
130
+ dummyPaymasterAndData: dummyPaymasterAndData(client, config),
131
+ paymasterAndData: async (struct, { account }) => {
132
+ const result = await client.request({
133
+ method: "alchemy_requestPaymasterAndData",
134
+ params: [
135
+ {
136
+ policyId: config.policyId,
137
+ entryPoint: account.getEntryPoint().address,
138
+ userOperation: (0, core_1.deepHexlify)(await (0, core_1.resolveProperties)(struct)),
139
+ },
140
+ ],
141
+ });
142
+ return {
143
+ ...struct,
144
+ ...result,
145
+ };
146
+ },
147
+ });
148
+ //# sourceMappingURL=gasManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gasManager.js","sourceRoot":"","sources":["../../../src/middleware/gasManager.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n Address,\n ClientMiddlewareConfig,\n ClientMiddlewareFn,\n EntryPointVersion,\n Multiplier,\n UserOperationFeeOptions,\n UserOperationOverrides,\n UserOperationRequest,\n} from \"@aa-sdk/core\";\nimport {\n bypassPaymasterAndDataEmptyHex,\n deepHexlify,\n defaultGasEstimator,\n filterUndefined,\n isBigNumberish,\n isMultiplier,\n resolveProperties,\n} from \"@aa-sdk/core\";\nimport { concat, fromHex, isHex, type Hex } from \"viem\";\nimport type { ClientWithAlchemyMethods } from \"../client/types\";\nimport { getAlchemyPaymasterAddress } from \"../gas-manager.js\";\nimport { alchemyFeeEstimator } from \"./feeEstimator.js\";\n\n/**\n * overrides value for [`alchemy_requestGasAndPaymasterData`](https://docs.alchemy.com/reference/alchemy-requestgasandpaymasteranddata)\n *\n * @template {EntryPointVersion} TEntryPointVersion entry point version type\n */\nexport type RequestGasAndPaymasterAndDataOverrides<\n TEntryPointVersion extends EntryPointVersion = EntryPointVersion\n> = Partial<\n {\n maxFeePerGas:\n | UserOperationRequest<TEntryPointVersion>[\"maxFeePerGas\"]\n | Multiplier;\n maxPriorityFeePerGas:\n | UserOperationRequest<TEntryPointVersion>[\"maxPriorityFeePerGas\"]\n | Multiplier;\n callGasLimit:\n | UserOperationRequest<TEntryPointVersion>[\"callGasLimit\"]\n | Multiplier;\n verificationGasLimit:\n | UserOperationRequest<TEntryPointVersion>[\"verificationGasLimit\"]\n | Multiplier;\n preVerificationGas:\n | UserOperationRequest<TEntryPointVersion>[\"preVerificationGas\"]\n | Multiplier;\n } & TEntryPointVersion extends \"0.7.0\"\n ? {\n paymasterVerificationGasLimit:\n | UserOperationRequest<\"0.7.0\">[\"paymasterVerificationGasLimit\"]\n | Multiplier;\n paymasterPostOpGasLimit:\n | UserOperationRequest<\"0.7.0\">[\"paymasterPostOpGasLimit\"]\n | Multiplier;\n }\n : {}\n>;\n\n/**\n * [`alchemy-requestpaymasteranddata`](https://docs.alchemy.com/reference/alchemy-requestpaymasteranddata)\n * response type\n *\n * @template {EntryPointVersion} TEntryPointVersion entry point version type\n */\nexport type RequestPaymasterAndDataResponse<\n TEntryPointVersion extends EntryPointVersion = EntryPointVersion\n> = TEntryPointVersion extends \"0.6.0\"\n ? {\n paymasterAndData: UserOperationRequest<\"0.6.0\">[\"paymasterAndData\"];\n }\n : TEntryPointVersion extends \"0.7.0\"\n ? Pick<UserOperationRequest<\"0.7.0\">, \"paymaster\" | \"paymasterData\">\n : {};\n\n/**\n * [`alchemy_requestGasAndPaymasterData`](https://docs.alchemy.com/reference/alchemy-requestgasandpaymasteranddata)\n * response type\n *\n * @template {EntryPointVersion} TEntryPointVersion entry point version type\n */\nexport type RequestGasAndPaymasterAndDataResponse<\n TEntryPointVersion extends EntryPointVersion = EntryPointVersion\n> = Pick<\n UserOperationRequest,\n | \"callGasLimit\"\n | \"preVerificationGas\"\n | \"verificationGasLimit\"\n | \"maxFeePerGas\"\n | \"maxPriorityFeePerGas\"\n> &\n RequestPaymasterAndDataResponse<TEntryPointVersion>;\n\n/**\n * Alchemy gas manager configuration with gas policy id and optional gas estimation options\n *\n * To create a Gas Manager Policy, go to the [gas manager](https://dashboard.alchemy.com/gas-manager?a=embedded-accounts-get-started)\n * page of the Alchemy dashboard and click the “Create new policy” button.\n */\nexport interface AlchemyGasManagerConfig {\n /**\n * the policy id of the gas manager you want to use.\n *\n */\n policyId: string;\n /**\n * optional option configurable for the gas estimation portion of the Alchemy gas manager\n *\n */\n gasEstimationOptions?: AlchemyGasEstimationOptions;\n /**\n * paymaster address to use for the gas estimation.\n * If not provided, the default paymaster address for the chain will be used.\n *\n */\n paymasterAddress?: Address;\n /**\n * dummy paymaster data to use for the gas estimation.\n *\n */\n dummyData?: Hex;\n}\n\n/**\n * Alchemy gas manager configuration option configurable for the gas estimation portion of the Alchemy gas manager\n *\n */\nexport interface AlchemyGasEstimationOptions {\n /**\n * disable gas estimation and fallback to the default gas estimation.\n *\n */\n disableGasEstimation: boolean;\n /**\n * optional fallback gas estimator to use when gas estimation is disabled.\n *\n */\n fallbackGasEstimator?: ClientMiddlewareFn;\n /**\n * optional fallback fee estimator to use when gas estimation is disabled.\n *\n */\n fallbackFeeDataGetter?: ClientMiddlewareFn;\n}\n\n/**\n * dummy paymaster and data middleware for the alchemy gas manager\n *\n * @template {ClientWithAlchemyMethods} C\n * @param client client with alchemy methods\n * @param config alchemy gas manager configuration\n * @returns the dummyPaymasterAndData middleware for Alchemy gas manager\n */\nconst dummyPaymasterAndData =\n <C extends ClientWithAlchemyMethods>(\n client: C,\n config: AlchemyGasManagerConfig\n ) =>\n () => {\n const paymaster =\n config.paymasterAddress ?? getAlchemyPaymasterAddress(client.chain);\n const paymasterData =\n config.dummyData ??\n \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\n\n return concat([paymaster, paymasterData]); // or you can also return { paymaster, paymasterData }\n };\n\n/**\n * Alchemy gas manager middleware used as the paymaster middleware overrides param to the client middleware config\n *\n * @template {ClientWithAlchemyMethods} C\n * @param client client with alchemy methods\n * @param config alchemy gas manager configuration\n * @returns the gas estimator, fee estimator, and paymasterAndData middleware for Alchemy gas manager\n */\nexport function alchemyGasManagerMiddleware<C extends ClientWithAlchemyMethods>(\n client: C,\n config: AlchemyGasManagerConfig\n): Pick<\n ClientMiddlewareConfig,\n \"paymasterAndData\" | \"feeEstimator\" | \"gasEstimator\"\n> {\n const gasEstimationOptions = config.gasEstimationOptions;\n const disableGasEstimation =\n gasEstimationOptions?.disableGasEstimation ?? false;\n const fallbackFeeDataGetter =\n gasEstimationOptions?.fallbackFeeDataGetter ?? alchemyFeeEstimator(client);\n const fallbackGasEstimator =\n gasEstimationOptions?.fallbackGasEstimator ??\n defaultGasEstimator<C>(client);\n\n return {\n gasEstimator: disableGasEstimation\n ? fallbackGasEstimator\n : async (struct, { overrides, account, feeOptions }) => {\n // if user is bypassing paymaster to fallback to having the account to pay the gas (one-off override),\n // we cannot delegate gas estimation to the bundler because paymaster middleware will not be called\n if (bypassPaymasterAndDataEmptyHex(overrides)) {\n return {\n ...struct,\n ...(await fallbackGasEstimator(struct, {\n overrides,\n account,\n feeOptions,\n client,\n })),\n };\n }\n\n // essentially noop, because the gas estimation will happen in the backend\n return struct;\n },\n feeEstimator: disableGasEstimation\n ? fallbackFeeDataGetter\n : async (struct, { overrides, account, feeOptions }) => {\n let maxFeePerGas = await struct.maxFeePerGas;\n let maxPriorityFeePerGas = await struct.maxPriorityFeePerGas;\n\n // if user is bypassing paymaster to fallback to having the account to pay the gas (one-off override),\n // we cannot delegate gas estimation to the bundler because paymaster middleware will not be called\n if (bypassPaymasterAndDataEmptyHex(overrides)) {\n const result = await fallbackFeeDataGetter(struct, {\n overrides,\n feeOptions,\n account,\n client,\n });\n maxFeePerGas = (await result.maxFeePerGas) ?? maxFeePerGas;\n maxPriorityFeePerGas =\n (await result.maxPriorityFeePerGas) ?? maxPriorityFeePerGas;\n }\n\n return {\n ...struct,\n maxFeePerGas,\n maxPriorityFeePerGas,\n };\n },\n paymasterAndData: disableGasEstimation\n ? requestPaymasterAndData(client, config)\n : requestGasAndPaymasterData(client, config),\n };\n}\n\n/**\n * Utility function to override a field in the user operation request with the overrides or fee options\n *\n * @template {EntryPointVersion} TEntryPointVersion\n * @param field the field to override\n * @param overrides the overrides object\n * @param feeOptions the fee options object from the client\n * @param userOperation the user operation request\n * @returns the overridden field value\n */\nconst overrideField = <\n TEntryPointVersion extends EntryPointVersion = EntryPointVersion\n>(\n field: keyof UserOperationFeeOptions<TEntryPointVersion>,\n overrides: UserOperationOverrides<TEntryPointVersion> | undefined,\n feeOptions: UserOperationFeeOptions<TEntryPointVersion> | undefined,\n userOperation: UserOperationRequest<TEntryPointVersion>\n): Hex | Multiplier | undefined => {\n let _field = field as keyof UserOperationOverrides<TEntryPointVersion>;\n\n if (overrides?.[_field] != null) {\n // one-off absolute override\n if (isBigNumberish(overrides[_field])) {\n return deepHexlify(overrides[_field]);\n }\n // one-off multiplier overrides\n else {\n return {\n multiplier: Number((overrides[_field] as Multiplier).multiplier),\n };\n }\n }\n\n // provider level fee options with multiplier\n if (isMultiplier(feeOptions?.[field])) {\n return {\n multiplier: Number((feeOptions![field] as Multiplier).multiplier),\n };\n }\n\n const userOpField =\n userOperation[field as keyof UserOperationRequest<TEntryPointVersion>];\n if (isHex(userOpField) && fromHex(userOpField as Hex, \"bigint\") > 0n) {\n return userOpField;\n }\n return undefined;\n};\n\n/**\n * Alchemy gas manager middleware function that returns the paymaster middleware for the client middleware config\n * that calls the [`alchemy_requestGasAndPaymasterAndData`](https://docs.alchemy.com/reference/alchemy-requestgasandpaymasteranddata)\n *\n * @template {ClientWithAlchemyMethods} C\n * @param client client with alchemy methods\n * @param config alchemy gas manager configuration\n * @returns the paymasterAndData middleware for Alchemy gas manager\n */\nfunction requestGasAndPaymasterData<C extends ClientWithAlchemyMethods>(\n client: C,\n config: AlchemyGasManagerConfig\n): ClientMiddlewareConfig[\"paymasterAndData\"] {\n return {\n dummyPaymasterAndData: dummyPaymasterAndData(client, config),\n\n paymasterAndData: async (\n struct,\n { overrides: overrides_, feeOptions, account }\n ) => {\n const userOperation: UserOperationRequest = deepHexlify(\n await resolveProperties(struct)\n );\n\n const overrides: RequestGasAndPaymasterAndDataOverrides = filterUndefined(\n {\n maxFeePerGas: overrideField(\n \"maxFeePerGas\",\n overrides_ as UserOperationOverrides,\n feeOptions,\n userOperation\n ),\n maxPriorityFeePerGas: overrideField(\n \"maxPriorityFeePerGas\",\n overrides_ as UserOperationOverrides,\n feeOptions,\n userOperation\n ),\n callGasLimit: overrideField(\n \"callGasLimit\",\n overrides_ as UserOperationOverrides,\n feeOptions,\n userOperation\n ),\n verificationGasLimit: overrideField(\n \"verificationGasLimit\",\n overrides_ as UserOperationOverrides,\n feeOptions,\n userOperation\n ),\n preVerificationGas: overrideField(\n \"preVerificationGas\",\n overrides_ as UserOperationOverrides,\n feeOptions,\n userOperation\n ),\n }\n );\n\n if (account.getEntryPoint().version === \"0.7.0\") {\n const paymasterVerificationGasLimit = overrideField<\"0.7.0\">(\n \"paymasterVerificationGasLimit\",\n overrides_ as UserOperationOverrides<\"0.7.0\">,\n feeOptions,\n userOperation\n );\n if (paymasterVerificationGasLimit != null) {\n (\n overrides as RequestGasAndPaymasterAndDataOverrides<\"0.7.0\">\n ).paymasterVerificationGasLimit = paymasterVerificationGasLimit;\n }\n\n const paymasterPostOpGasLimit = overrideField<\"0.7.0\">(\n \"paymasterPostOpGasLimit\",\n overrides_ as UserOperationOverrides<\"0.7.0\">,\n feeOptions,\n userOperation\n );\n if (paymasterPostOpGasLimit != null) {\n (\n overrides as RequestGasAndPaymasterAndDataOverrides<\"0.7.0\">\n ).paymasterPostOpGasLimit = paymasterPostOpGasLimit;\n }\n }\n\n const result = await client.request({\n method: \"alchemy_requestGasAndPaymasterAndData\",\n params: [\n {\n policyId: config.policyId,\n entryPoint: account.getEntryPoint().address,\n userOperation,\n dummySignature: userOperation.signature,\n overrides,\n },\n ],\n });\n\n return {\n ...struct,\n ...result,\n };\n },\n };\n}\n\n/**\n * Alchemy gas manager middleware function that returns the paymaster middleware for the client middleware config\n * that calls the [`alchemy_requestPaymasterAndData`](https://docs.alchemy.com/reference/alchemy-requestpaymasteranddata)\n * with gas estimation disabled.\n *\n * @param client client with alchemy methods\n * @param config alchemy gas manager configuration\n * @returns the paymasterAndData middleware for Alchemy gas manager with gas estimation disabled\n */\nconst requestPaymasterAndData: <C extends ClientWithAlchemyMethods>(\n client: C,\n config: AlchemyGasManagerConfig\n) => ClientMiddlewareConfig[\"paymasterAndData\"] = (client, config) => ({\n dummyPaymasterAndData: dummyPaymasterAndData(client, config),\n paymasterAndData: async (struct, { account }) => {\n const result = await client.request({\n method: \"alchemy_requestPaymasterAndData\",\n params: [\n {\n policyId: config.policyId,\n entryPoint: account.getEntryPoint().address,\n userOperation: deepHexlify(await resolveProperties(struct)),\n },\n ],\n });\n\n return {\n ...struct,\n ...result,\n };\n },\n});\n"]}
@@ -0,0 +1,3 @@
1
+ import { type ClientMiddlewareFn } from "@aa-sdk/core";
2
+ import type { ClientWithAlchemyMethods } from "../client/types";
3
+ export declare function alchemyUserOperationSimulator<C extends ClientWithAlchemyMethods>(client: C): ClientMiddlewareFn;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.alchemyUserOperationSimulator = void 0;
4
+ const core_1 = require("@aa-sdk/core");
5
+ function alchemyUserOperationSimulator(client) {
6
+ return async (struct, { account }) => {
7
+ const uoSimResult = await client.request({
8
+ method: "alchemy_simulateUserOperationAssetChanges",
9
+ params: [
10
+ (0, core_1.deepHexlify)(await (0, core_1.resolveProperties)(struct)),
11
+ account.getEntryPoint().address,
12
+ ],
13
+ });
14
+ if (uoSimResult.error) {
15
+ throw new Error(uoSimResult.error.message);
16
+ }
17
+ return struct;
18
+ };
19
+ }
20
+ exports.alchemyUserOperationSimulator = alchemyUserOperationSimulator;
21
+ //# sourceMappingURL=userOperationSimulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userOperationSimulator.js","sourceRoot":"","sources":["../../../src/middleware/userOperationSimulator.ts"],"names":[],"mappings":";;;AAAA,uCAIsB;AAGtB,SAAgB,6BAA6B,CAE3C,MAAS;IACT,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACnC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YACvC,MAAM,EAAE,2CAA2C;YACnD,MAAM,EAAE;gBACN,IAAA,kBAAW,EAAC,MAAM,IAAA,wBAAiB,EAAC,MAAM,CAAC,CAAC;gBAC5C,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO;aAChC;SACF,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAlBD,sEAkBC","sourcesContent":["import {\n deepHexlify,\n resolveProperties,\n type ClientMiddlewareFn,\n} from \"@aa-sdk/core\";\nimport type { ClientWithAlchemyMethods } from \"../client/types\";\n\nexport function alchemyUserOperationSimulator<\n C extends ClientWithAlchemyMethods\n>(client: C): ClientMiddlewareFn {\n return async (struct, { account }) => {\n const uoSimResult = await client.request({\n method: \"alchemy_simulateUserOperationAssetChanges\",\n params: [\n deepHexlify(await resolveProperties(struct)),\n account.getEntryPoint().address,\n ],\n });\n\n if (uoSimResult.error) {\n throw new Error(uoSimResult.error.message);\n }\n\n return struct;\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,396 @@
1
+ import { Alchemy } from "alchemy-sdk";
2
+ import type { Chain } from "viem";
3
+ import z from "zod";
4
+ export declare const AlchemyChainSchema: z.ZodType<Chain, z.ZodTypeDef, Chain>;
5
+ export declare const AlchemyProviderConfigSchema: z.ZodIntersection<z.ZodUnion<[z.ZodObject<{
6
+ rpcUrl: z.ZodOptional<z.ZodNever>;
7
+ apiKey: z.ZodString;
8
+ jwt: z.ZodOptional<z.ZodNever>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ apiKey: string;
11
+ rpcUrl?: undefined;
12
+ jwt?: undefined;
13
+ }, {
14
+ apiKey: string;
15
+ rpcUrl?: undefined;
16
+ jwt?: undefined;
17
+ }>, z.ZodObject<{
18
+ rpcUrl: z.ZodOptional<z.ZodNever>;
19
+ apiKey: z.ZodOptional<z.ZodNever>;
20
+ jwt: z.ZodString;
21
+ }, "strip", z.ZodTypeAny, {
22
+ jwt: string;
23
+ rpcUrl?: undefined;
24
+ apiKey?: undefined;
25
+ }, {
26
+ jwt: string;
27
+ rpcUrl?: undefined;
28
+ apiKey?: undefined;
29
+ }>, z.ZodObject<{
30
+ rpcUrl: z.ZodString;
31
+ apiKey: z.ZodOptional<z.ZodNever>;
32
+ jwt: z.ZodOptional<z.ZodNever>;
33
+ }, "strip", z.ZodTypeAny, {
34
+ rpcUrl: string;
35
+ apiKey?: undefined;
36
+ jwt?: undefined;
37
+ }, {
38
+ rpcUrl: string;
39
+ apiKey?: undefined;
40
+ jwt?: undefined;
41
+ }>, z.ZodObject<{
42
+ rpcUrl: z.ZodString;
43
+ apiKey: z.ZodOptional<z.ZodNever>;
44
+ jwt: z.ZodString;
45
+ }, "strip", z.ZodTypeAny, {
46
+ rpcUrl: string;
47
+ jwt: string;
48
+ apiKey?: undefined;
49
+ }, {
50
+ rpcUrl: string;
51
+ jwt: string;
52
+ apiKey?: undefined;
53
+ }>]>, z.ZodObject<{
54
+ chain: z.ZodType<Chain, z.ZodTypeDef, Chain>;
55
+ opts: z.ZodDefault<z.ZodOptional<z.ZodObject<{
56
+ txMaxRetries: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
57
+ txRetryIntervalMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
58
+ txRetryMultiplier: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
59
+ feeOptions: z.ZodOptional<z.ZodObject<{
60
+ callGasLimit: z.ZodOptional<z.ZodOptional<z.ZodObject<{
61
+ min: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
62
+ max: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
63
+ multiplier: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, number>>;
64
+ }, "strict", z.ZodTypeAny, {
65
+ min?: number | bigint | `0x${string}` | undefined;
66
+ max?: number | bigint | `0x${string}` | undefined;
67
+ multiplier?: number | undefined;
68
+ }, {
69
+ min?: number | bigint | `0x${string}` | undefined;
70
+ max?: number | bigint | `0x${string}` | undefined;
71
+ multiplier?: number | undefined;
72
+ }>>>;
73
+ verificationGasLimit: z.ZodOptional<z.ZodOptional<z.ZodObject<{
74
+ min: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
75
+ max: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
76
+ multiplier: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, number>>;
77
+ }, "strict", z.ZodTypeAny, {
78
+ min?: number | bigint | `0x${string}` | undefined;
79
+ max?: number | bigint | `0x${string}` | undefined;
80
+ multiplier?: number | undefined;
81
+ }, {
82
+ min?: number | bigint | `0x${string}` | undefined;
83
+ max?: number | bigint | `0x${string}` | undefined;
84
+ multiplier?: number | undefined;
85
+ }>>>;
86
+ preVerificationGas: z.ZodOptional<z.ZodOptional<z.ZodObject<{
87
+ min: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
88
+ max: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
89
+ multiplier: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, number>>;
90
+ }, "strict", z.ZodTypeAny, {
91
+ min?: number | bigint | `0x${string}` | undefined;
92
+ max?: number | bigint | `0x${string}` | undefined;
93
+ multiplier?: number | undefined;
94
+ }, {
95
+ min?: number | bigint | `0x${string}` | undefined;
96
+ max?: number | bigint | `0x${string}` | undefined;
97
+ multiplier?: number | undefined;
98
+ }>>>;
99
+ maxFeePerGas: z.ZodOptional<z.ZodOptional<z.ZodObject<{
100
+ min: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
101
+ max: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
102
+ multiplier: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, number>>;
103
+ }, "strict", z.ZodTypeAny, {
104
+ min?: number | bigint | `0x${string}` | undefined;
105
+ max?: number | bigint | `0x${string}` | undefined;
106
+ multiplier?: number | undefined;
107
+ }, {
108
+ min?: number | bigint | `0x${string}` | undefined;
109
+ max?: number | bigint | `0x${string}` | undefined;
110
+ multiplier?: number | undefined;
111
+ }>>>;
112
+ maxPriorityFeePerGas: z.ZodOptional<z.ZodOptional<z.ZodObject<{
113
+ min: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
114
+ max: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
115
+ multiplier: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, number>>;
116
+ }, "strict", z.ZodTypeAny, {
117
+ min?: number | bigint | `0x${string}` | undefined;
118
+ max?: number | bigint | `0x${string}` | undefined;
119
+ multiplier?: number | undefined;
120
+ }, {
121
+ min?: number | bigint | `0x${string}` | undefined;
122
+ max?: number | bigint | `0x${string}` | undefined;
123
+ multiplier?: number | undefined;
124
+ }>>>;
125
+ paymasterVerificationGasLimit: z.ZodOptional<z.ZodObject<{
126
+ min: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
127
+ max: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
128
+ multiplier: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, number>>;
129
+ }, "strict", z.ZodTypeAny, {
130
+ min?: number | bigint | `0x${string}` | undefined;
131
+ max?: number | bigint | `0x${string}` | undefined;
132
+ multiplier?: number | undefined;
133
+ }, {
134
+ min?: number | bigint | `0x${string}` | undefined;
135
+ max?: number | bigint | `0x${string}` | undefined;
136
+ multiplier?: number | undefined;
137
+ }>>;
138
+ paymasterPostOpGasLimit: z.ZodOptional<z.ZodObject<{
139
+ min: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
140
+ max: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNumber, z.ZodBigInt]>>>;
141
+ multiplier: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, number>>;
142
+ }, "strict", z.ZodTypeAny, {
143
+ min?: number | bigint | `0x${string}` | undefined;
144
+ max?: number | bigint | `0x${string}` | undefined;
145
+ multiplier?: number | undefined;
146
+ }, {
147
+ min?: number | bigint | `0x${string}` | undefined;
148
+ max?: number | bigint | `0x${string}` | undefined;
149
+ multiplier?: number | undefined;
150
+ }>>;
151
+ }, "strict", z.ZodTypeAny, {
152
+ callGasLimit?: {
153
+ min?: number | bigint | `0x${string}` | undefined;
154
+ max?: number | bigint | `0x${string}` | undefined;
155
+ multiplier?: number | undefined;
156
+ } | undefined;
157
+ verificationGasLimit?: {
158
+ min?: number | bigint | `0x${string}` | undefined;
159
+ max?: number | bigint | `0x${string}` | undefined;
160
+ multiplier?: number | undefined;
161
+ } | undefined;
162
+ preVerificationGas?: {
163
+ min?: number | bigint | `0x${string}` | undefined;
164
+ max?: number | bigint | `0x${string}` | undefined;
165
+ multiplier?: number | undefined;
166
+ } | undefined;
167
+ maxFeePerGas?: {
168
+ min?: number | bigint | `0x${string}` | undefined;
169
+ max?: number | bigint | `0x${string}` | undefined;
170
+ multiplier?: number | undefined;
171
+ } | undefined;
172
+ maxPriorityFeePerGas?: {
173
+ min?: number | bigint | `0x${string}` | undefined;
174
+ max?: number | bigint | `0x${string}` | undefined;
175
+ multiplier?: number | undefined;
176
+ } | undefined;
177
+ paymasterVerificationGasLimit?: {
178
+ min?: number | bigint | `0x${string}` | undefined;
179
+ max?: number | bigint | `0x${string}` | undefined;
180
+ multiplier?: number | undefined;
181
+ } | undefined;
182
+ paymasterPostOpGasLimit?: {
183
+ min?: number | bigint | `0x${string}` | undefined;
184
+ max?: number | bigint | `0x${string}` | undefined;
185
+ multiplier?: number | undefined;
186
+ } | undefined;
187
+ }, {
188
+ callGasLimit?: {
189
+ min?: number | bigint | `0x${string}` | undefined;
190
+ max?: number | bigint | `0x${string}` | undefined;
191
+ multiplier?: number | undefined;
192
+ } | undefined;
193
+ verificationGasLimit?: {
194
+ min?: number | bigint | `0x${string}` | undefined;
195
+ max?: number | bigint | `0x${string}` | undefined;
196
+ multiplier?: number | undefined;
197
+ } | undefined;
198
+ preVerificationGas?: {
199
+ min?: number | bigint | `0x${string}` | undefined;
200
+ max?: number | bigint | `0x${string}` | undefined;
201
+ multiplier?: number | undefined;
202
+ } | undefined;
203
+ maxFeePerGas?: {
204
+ min?: number | bigint | `0x${string}` | undefined;
205
+ max?: number | bigint | `0x${string}` | undefined;
206
+ multiplier?: number | undefined;
207
+ } | undefined;
208
+ maxPriorityFeePerGas?: {
209
+ min?: number | bigint | `0x${string}` | undefined;
210
+ max?: number | bigint | `0x${string}` | undefined;
211
+ multiplier?: number | undefined;
212
+ } | undefined;
213
+ paymasterVerificationGasLimit?: {
214
+ min?: number | bigint | `0x${string}` | undefined;
215
+ max?: number | bigint | `0x${string}` | undefined;
216
+ multiplier?: number | undefined;
217
+ } | undefined;
218
+ paymasterPostOpGasLimit?: {
219
+ min?: number | bigint | `0x${string}` | undefined;
220
+ max?: number | bigint | `0x${string}` | undefined;
221
+ multiplier?: number | undefined;
222
+ } | undefined;
223
+ }>>;
224
+ }, "strict", z.ZodTypeAny, {
225
+ txMaxRetries: number;
226
+ txRetryIntervalMs: number;
227
+ txRetryMultiplier: number;
228
+ feeOptions?: {
229
+ callGasLimit?: {
230
+ min?: number | bigint | `0x${string}` | undefined;
231
+ max?: number | bigint | `0x${string}` | undefined;
232
+ multiplier?: number | undefined;
233
+ } | undefined;
234
+ verificationGasLimit?: {
235
+ min?: number | bigint | `0x${string}` | undefined;
236
+ max?: number | bigint | `0x${string}` | undefined;
237
+ multiplier?: number | undefined;
238
+ } | undefined;
239
+ preVerificationGas?: {
240
+ min?: number | bigint | `0x${string}` | undefined;
241
+ max?: number | bigint | `0x${string}` | undefined;
242
+ multiplier?: number | undefined;
243
+ } | undefined;
244
+ maxFeePerGas?: {
245
+ min?: number | bigint | `0x${string}` | undefined;
246
+ max?: number | bigint | `0x${string}` | undefined;
247
+ multiplier?: number | undefined;
248
+ } | undefined;
249
+ maxPriorityFeePerGas?: {
250
+ min?: number | bigint | `0x${string}` | undefined;
251
+ max?: number | bigint | `0x${string}` | undefined;
252
+ multiplier?: number | undefined;
253
+ } | undefined;
254
+ paymasterVerificationGasLimit?: {
255
+ min?: number | bigint | `0x${string}` | undefined;
256
+ max?: number | bigint | `0x${string}` | undefined;
257
+ multiplier?: number | undefined;
258
+ } | undefined;
259
+ paymasterPostOpGasLimit?: {
260
+ min?: number | bigint | `0x${string}` | undefined;
261
+ max?: number | bigint | `0x${string}` | undefined;
262
+ multiplier?: number | undefined;
263
+ } | undefined;
264
+ } | undefined;
265
+ }, {
266
+ txMaxRetries?: number | undefined;
267
+ txRetryIntervalMs?: number | undefined;
268
+ txRetryMultiplier?: number | undefined;
269
+ feeOptions?: {
270
+ callGasLimit?: {
271
+ min?: number | bigint | `0x${string}` | undefined;
272
+ max?: number | bigint | `0x${string}` | undefined;
273
+ multiplier?: number | undefined;
274
+ } | undefined;
275
+ verificationGasLimit?: {
276
+ min?: number | bigint | `0x${string}` | undefined;
277
+ max?: number | bigint | `0x${string}` | undefined;
278
+ multiplier?: number | undefined;
279
+ } | undefined;
280
+ preVerificationGas?: {
281
+ min?: number | bigint | `0x${string}` | undefined;
282
+ max?: number | bigint | `0x${string}` | undefined;
283
+ multiplier?: number | undefined;
284
+ } | undefined;
285
+ maxFeePerGas?: {
286
+ min?: number | bigint | `0x${string}` | undefined;
287
+ max?: number | bigint | `0x${string}` | undefined;
288
+ multiplier?: number | undefined;
289
+ } | undefined;
290
+ maxPriorityFeePerGas?: {
291
+ min?: number | bigint | `0x${string}` | undefined;
292
+ max?: number | bigint | `0x${string}` | undefined;
293
+ multiplier?: number | undefined;
294
+ } | undefined;
295
+ paymasterVerificationGasLimit?: {
296
+ min?: number | bigint | `0x${string}` | undefined;
297
+ max?: number | bigint | `0x${string}` | undefined;
298
+ multiplier?: number | undefined;
299
+ } | undefined;
300
+ paymasterPostOpGasLimit?: {
301
+ min?: number | bigint | `0x${string}` | undefined;
302
+ max?: number | bigint | `0x${string}` | undefined;
303
+ multiplier?: number | undefined;
304
+ } | undefined;
305
+ } | undefined;
306
+ }>>>;
307
+ }, "strip", z.ZodTypeAny, {
308
+ chain: Chain;
309
+ opts: {
310
+ txMaxRetries: number;
311
+ txRetryIntervalMs: number;
312
+ txRetryMultiplier: number;
313
+ feeOptions?: {
314
+ callGasLimit?: {
315
+ min?: number | bigint | `0x${string}` | undefined;
316
+ max?: number | bigint | `0x${string}` | undefined;
317
+ multiplier?: number | undefined;
318
+ } | undefined;
319
+ verificationGasLimit?: {
320
+ min?: number | bigint | `0x${string}` | undefined;
321
+ max?: number | bigint | `0x${string}` | undefined;
322
+ multiplier?: number | undefined;
323
+ } | undefined;
324
+ preVerificationGas?: {
325
+ min?: number | bigint | `0x${string}` | undefined;
326
+ max?: number | bigint | `0x${string}` | undefined;
327
+ multiplier?: number | undefined;
328
+ } | undefined;
329
+ maxFeePerGas?: {
330
+ min?: number | bigint | `0x${string}` | undefined;
331
+ max?: number | bigint | `0x${string}` | undefined;
332
+ multiplier?: number | undefined;
333
+ } | undefined;
334
+ maxPriorityFeePerGas?: {
335
+ min?: number | bigint | `0x${string}` | undefined;
336
+ max?: number | bigint | `0x${string}` | undefined;
337
+ multiplier?: number | undefined;
338
+ } | undefined;
339
+ paymasterVerificationGasLimit?: {
340
+ min?: number | bigint | `0x${string}` | undefined;
341
+ max?: number | bigint | `0x${string}` | undefined;
342
+ multiplier?: number | undefined;
343
+ } | undefined;
344
+ paymasterPostOpGasLimit?: {
345
+ min?: number | bigint | `0x${string}` | undefined;
346
+ max?: number | bigint | `0x${string}` | undefined;
347
+ multiplier?: number | undefined;
348
+ } | undefined;
349
+ } | undefined;
350
+ };
351
+ }, {
352
+ chain: Chain;
353
+ opts?: {
354
+ txMaxRetries?: number | undefined;
355
+ txRetryIntervalMs?: number | undefined;
356
+ txRetryMultiplier?: number | undefined;
357
+ feeOptions?: {
358
+ callGasLimit?: {
359
+ min?: number | bigint | `0x${string}` | undefined;
360
+ max?: number | bigint | `0x${string}` | undefined;
361
+ multiplier?: number | undefined;
362
+ } | undefined;
363
+ verificationGasLimit?: {
364
+ min?: number | bigint | `0x${string}` | undefined;
365
+ max?: number | bigint | `0x${string}` | undefined;
366
+ multiplier?: number | undefined;
367
+ } | undefined;
368
+ preVerificationGas?: {
369
+ min?: number | bigint | `0x${string}` | undefined;
370
+ max?: number | bigint | `0x${string}` | undefined;
371
+ multiplier?: number | undefined;
372
+ } | undefined;
373
+ maxFeePerGas?: {
374
+ min?: number | bigint | `0x${string}` | undefined;
375
+ max?: number | bigint | `0x${string}` | undefined;
376
+ multiplier?: number | undefined;
377
+ } | undefined;
378
+ maxPriorityFeePerGas?: {
379
+ min?: number | bigint | `0x${string}` | undefined;
380
+ max?: number | bigint | `0x${string}` | undefined;
381
+ multiplier?: number | undefined;
382
+ } | undefined;
383
+ paymasterVerificationGasLimit?: {
384
+ min?: number | bigint | `0x${string}` | undefined;
385
+ max?: number | bigint | `0x${string}` | undefined;
386
+ multiplier?: number | undefined;
387
+ } | undefined;
388
+ paymasterPostOpGasLimit?: {
389
+ min?: number | bigint | `0x${string}` | undefined;
390
+ max?: number | bigint | `0x${string}` | undefined;
391
+ multiplier?: number | undefined;
392
+ } | undefined;
393
+ } | undefined;
394
+ } | undefined;
395
+ }>>;
396
+ export declare const AlchemySdkClientSchema: z.ZodType<Alchemy, z.ZodTypeDef, Alchemy>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AlchemySdkClientSchema = exports.AlchemyProviderConfigSchema = exports.AlchemyChainSchema = void 0;
7
+ const core_1 = require("@aa-sdk/core");
8
+ const alchemy_sdk_1 = require("alchemy-sdk");
9
+ const zod_1 = __importDefault(require("zod"));
10
+ exports.AlchemyChainSchema = zod_1.default.custom((chain) => {
11
+ const _chain = core_1.ChainSchema.parse(chain);
12
+ let chainObject;
13
+ try {
14
+ chainObject = (0, core_1.getChain)(_chain.id);
15
+ }
16
+ catch {
17
+ return false;
18
+ }
19
+ return chainObject.rpcUrls.alchemy != null;
20
+ }, "chain must include an alchemy rpc url. See `createAlchemyChain` or use the `AlchemyChainMap` exported from `@aa-sdk/core`");
21
+ exports.AlchemyProviderConfigSchema = core_1.ConnectionConfigSchema.and(zod_1.default.object({
22
+ chain: exports.AlchemyChainSchema,
23
+ opts: core_1.SmartAccountClientOptsSchema.optional().default(core_1.SmartAccountClientOptsSchema.parse({})),
24
+ }));
25
+ exports.AlchemySdkClientSchema = zod_1.default.instanceof(alchemy_sdk_1.Alchemy);
26
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":";;;;;;AAAA,uCAKsB;AACtB,6CAAsC;AAEtC,8CAAoB;AAEP,QAAA,kBAAkB,GAAG,aAAC,CAAC,MAAM,CAAQ,CAAC,KAAK,EAAE,EAAE;IAC1D,MAAM,MAAM,GAAG,kBAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAExC,IAAI,WAAW,CAAC;IAChB,IAAI,CAAC;QACH,WAAW,GAAG,IAAA,eAAQ,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;AAC7C,CAAC,EAAE,2HAA2H,CAAC,CAAC;AAEnH,QAAA,2BAA2B,GAAG,6BAAsB,CAAC,GAAG,CACnE,aAAC,CAAC,MAAM,CAAC;IACP,KAAK,EAAE,0BAAkB;IACzB,IAAI,EAAE,mCAA4B,CAAC,QAAQ,EAAE,CAAC,OAAO,CACnD,mCAA4B,CAAC,KAAK,CAAC,EAAE,CAAC,CACvC;CACF,CAAC,CACH,CAAC;AAEW,QAAA,sBAAsB,GAAG,aAAC,CAAC,UAAU,CAAC,qBAAO,CAAC,CAAC","sourcesContent":["import {\n ChainSchema,\n ConnectionConfigSchema,\n SmartAccountClientOptsSchema,\n getChain,\n} from \"@aa-sdk/core\";\nimport { Alchemy } from \"alchemy-sdk\";\nimport type { Chain } from \"viem\";\nimport z from \"zod\";\n\nexport const AlchemyChainSchema = z.custom<Chain>((chain) => {\n const _chain = ChainSchema.parse(chain);\n\n let chainObject;\n try {\n chainObject = getChain(_chain.id);\n } catch {\n return false;\n }\n\n return chainObject.rpcUrls.alchemy != null;\n}, \"chain must include an alchemy rpc url. See `createAlchemyChain` or use the `AlchemyChainMap` exported from `@aa-sdk/core`\");\n\nexport const AlchemyProviderConfigSchema = ConnectionConfigSchema.and(\n z.object({\n chain: AlchemyChainSchema,\n opts: SmartAccountClientOptsSchema.optional().default(\n SmartAccountClientOptsSchema.parse({})\n ),\n })\n);\n\nexport const AlchemySdkClientSchema = z.instanceof(Alchemy);\n"]}