@account-kit/smart-contracts 4.7.0 → 4.9.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 (187) hide show
  1. package/dist/esm/src/light-account/clients/alchemyClient.js +6 -12
  2. package/dist/esm/src/light-account/clients/alchemyClient.js.map +1 -1
  3. package/dist/esm/src/light-account/clients/client.d.ts +9 -4
  4. package/dist/esm/src/light-account/clients/client.js +26 -1
  5. package/dist/esm/src/light-account/clients/client.js.map +1 -1
  6. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.js +6 -11
  7. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.js.map +1 -1
  8. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.d.ts +10 -4
  9. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js +27 -3
  10. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js.map +1 -1
  11. package/dist/esm/src/ma-v2/abis/accountFactoryAbi.d.ts +492 -0
  12. package/dist/esm/src/ma-v2/abis/accountFactoryAbi.js +639 -0
  13. package/dist/esm/src/ma-v2/abis/accountFactoryAbi.js.map +1 -0
  14. package/dist/esm/src/ma-v2/abis/modularAccountAbi.d.ts +954 -0
  15. package/dist/esm/src/ma-v2/abis/modularAccountAbi.js +1242 -0
  16. package/dist/esm/src/ma-v2/abis/modularAccountAbi.js.map +1 -0
  17. package/dist/esm/src/ma-v2/abis/semiModularAccountBytecodeAbi.d.ts +991 -0
  18. package/dist/esm/src/ma-v2/abis/semiModularAccountBytecodeAbi.js +1289 -0
  19. package/dist/esm/src/ma-v2/abis/semiModularAccountBytecodeAbi.js.map +1 -0
  20. package/dist/esm/src/ma-v2/abis/semiModularAccountStorageAbi.d.ts +1001 -0
  21. package/dist/esm/src/ma-v2/abis/semiModularAccountStorageAbi.js +1302 -0
  22. package/dist/esm/src/ma-v2/abis/semiModularAccountStorageAbi.js.map +1 -0
  23. package/dist/esm/src/ma-v2/account/nativeSMASigner.d.ts +238 -0
  24. package/dist/esm/src/ma-v2/account/nativeSMASigner.js +88 -0
  25. package/dist/esm/src/ma-v2/account/nativeSMASigner.js.map +1 -0
  26. package/dist/esm/src/ma-v2/account/semiModularAccountV2.d.ts +41 -0
  27. package/dist/esm/src/ma-v2/account/semiModularAccountV2.js +148 -0
  28. package/dist/esm/src/ma-v2/account/semiModularAccountV2.js.map +1 -0
  29. package/dist/esm/src/ma-v2/actions/common/types.d.ts +31 -0
  30. package/dist/esm/src/ma-v2/actions/common/types.js +6 -0
  31. package/dist/esm/src/ma-v2/actions/common/types.js.map +1 -0
  32. package/dist/esm/src/ma-v2/actions/common/utils.d.ts +76 -0
  33. package/dist/esm/src/ma-v2/actions/common/utils.js +100 -0
  34. package/dist/esm/src/ma-v2/actions/common/utils.js.map +1 -0
  35. package/dist/esm/src/ma-v2/actions/install-validation/installValidation.d.ts +71 -0
  36. package/dist/esm/src/ma-v2/actions/install-validation/installValidation.js +109 -0
  37. package/dist/esm/src/ma-v2/actions/install-validation/installValidation.js.map +1 -0
  38. package/dist/esm/src/ma-v2/client/client.d.ts +13 -0
  39. package/dist/esm/src/ma-v2/client/client.js +54 -0
  40. package/dist/esm/src/ma-v2/client/client.js.map +1 -0
  41. package/dist/esm/src/ma-v2/index.d.ts +26 -0
  42. package/dist/esm/src/ma-v2/index.js +24 -0
  43. package/dist/esm/src/ma-v2/index.js.map +1 -0
  44. package/dist/esm/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.d.ts +556 -0
  45. package/dist/esm/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.js +716 -0
  46. package/dist/esm/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.js.map +1 -0
  47. package/dist/esm/src/ma-v2/modules/allowlist-module/module.d.ts +579 -0
  48. package/dist/esm/src/ma-v2/modules/allowlist-module/module.js +56 -0
  49. package/dist/esm/src/ma-v2/modules/allowlist-module/module.js.map +1 -0
  50. package/dist/esm/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.d.ts +312 -0
  51. package/dist/esm/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.js +404 -0
  52. package/dist/esm/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.js.map +1 -0
  53. package/dist/esm/src/ma-v2/modules/native-token-limit-module/module.d.ts +322 -0
  54. package/dist/esm/src/ma-v2/modules/native-token-limit-module/module.js +14 -0
  55. package/dist/esm/src/ma-v2/modules/native-token-limit-module/module.js.map +1 -0
  56. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.d.ts +186 -0
  57. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.js +242 -0
  58. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.js.map +1 -0
  59. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/module.d.ts +196 -0
  60. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/module.js +25 -0
  61. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/module.js.map +1 -0
  62. package/dist/esm/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.d.ts +45 -0
  63. package/dist/esm/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.js +331 -0
  64. package/dist/esm/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.js.map +1 -0
  65. package/dist/esm/src/ma-v2/modules/single-signer-validation/module.d.ts +10 -0
  66. package/dist/esm/src/ma-v2/modules/single-signer-validation/module.js +16 -0
  67. package/dist/esm/src/ma-v2/modules/single-signer-validation/module.js.map +1 -0
  68. package/dist/esm/src/ma-v2/modules/single-signer-validation/signer.d.ts +239 -0
  69. package/dist/esm/src/ma-v2/modules/single-signer-validation/signer.js +93 -0
  70. package/dist/esm/src/ma-v2/modules/single-signer-validation/signer.js.map +1 -0
  71. package/dist/esm/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.d.ts +229 -0
  72. package/dist/esm/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.js +296 -0
  73. package/dist/esm/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.js.map +1 -0
  74. package/dist/esm/src/ma-v2/modules/time-range-module/module.d.ts +245 -0
  75. package/dist/esm/src/ma-v2/modules/time-range-module/module.js +42 -0
  76. package/dist/esm/src/ma-v2/modules/time-range-module/module.js.map +1 -0
  77. package/dist/esm/src/ma-v2/modules/utils.d.ts +91 -0
  78. package/dist/esm/src/ma-v2/modules/utils.js +188 -0
  79. package/dist/esm/src/ma-v2/modules/utils.js.map +1 -0
  80. package/dist/esm/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.d.ts +287 -0
  81. package/dist/esm/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.js +374 -0
  82. package/dist/esm/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.js.map +1 -0
  83. package/dist/esm/src/ma-v2/utils.d.ts +16 -0
  84. package/dist/esm/src/ma-v2/utils.js +105 -0
  85. package/dist/esm/src/ma-v2/utils.js.map +1 -0
  86. package/dist/esm/src/msca/client/alchemyClient.js +4 -17
  87. package/dist/esm/src/msca/client/alchemyClient.js.map +1 -1
  88. package/dist/esm/src/msca/client/client.d.ts +14 -5
  89. package/dist/esm/src/msca/client/client.js +62 -0
  90. package/dist/esm/src/msca/client/client.js.map +1 -1
  91. package/dist/esm/src/msca/client/multiSigAlchemyClient.d.ts +4 -2
  92. package/dist/esm/src/msca/client/multiSigAlchemyClient.js +5 -19
  93. package/dist/esm/src/msca/client/multiSigAlchemyClient.js.map +1 -1
  94. package/dist/types/src/light-account/clients/alchemyClient.d.ts.map +1 -1
  95. package/dist/types/src/light-account/clients/client.d.ts +9 -4
  96. package/dist/types/src/light-account/clients/client.d.ts.map +1 -1
  97. package/dist/types/src/light-account/clients/multiOwnerAlchemyClient.d.ts.map +1 -1
  98. package/dist/types/src/light-account/clients/multiOwnerLightAccount.d.ts +10 -4
  99. package/dist/types/src/light-account/clients/multiOwnerLightAccount.d.ts.map +1 -1
  100. package/dist/types/src/ma-v2/abis/accountFactoryAbi.d.ts +493 -0
  101. package/dist/types/src/ma-v2/abis/accountFactoryAbi.d.ts.map +1 -0
  102. package/dist/types/src/ma-v2/abis/modularAccountAbi.d.ts +955 -0
  103. package/dist/types/src/ma-v2/abis/modularAccountAbi.d.ts.map +1 -0
  104. package/dist/types/src/ma-v2/abis/semiModularAccountBytecodeAbi.d.ts +992 -0
  105. package/dist/types/src/ma-v2/abis/semiModularAccountBytecodeAbi.d.ts.map +1 -0
  106. package/dist/types/src/ma-v2/abis/semiModularAccountStorageAbi.d.ts +1002 -0
  107. package/dist/types/src/ma-v2/abis/semiModularAccountStorageAbi.d.ts.map +1 -0
  108. package/dist/types/src/ma-v2/account/nativeSMASigner.d.ts +239 -0
  109. package/dist/types/src/ma-v2/account/nativeSMASigner.d.ts.map +1 -0
  110. package/dist/types/src/ma-v2/account/semiModularAccountV2.d.ts +42 -0
  111. package/dist/types/src/ma-v2/account/semiModularAccountV2.d.ts.map +1 -0
  112. package/dist/types/src/ma-v2/actions/common/types.d.ts +32 -0
  113. package/dist/types/src/ma-v2/actions/common/types.d.ts.map +1 -0
  114. package/dist/types/src/ma-v2/actions/common/utils.d.ts +77 -0
  115. package/dist/types/src/ma-v2/actions/common/utils.d.ts.map +1 -0
  116. package/dist/types/src/ma-v2/actions/install-validation/installValidation.d.ts +72 -0
  117. package/dist/types/src/ma-v2/actions/install-validation/installValidation.d.ts.map +1 -0
  118. package/dist/types/src/ma-v2/client/client.d.ts +14 -0
  119. package/dist/types/src/ma-v2/client/client.d.ts.map +1 -0
  120. package/dist/types/src/ma-v2/index.d.ts +27 -0
  121. package/dist/types/src/ma-v2/index.d.ts.map +1 -0
  122. package/dist/types/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.d.ts +557 -0
  123. package/dist/types/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.d.ts.map +1 -0
  124. package/dist/types/src/ma-v2/modules/allowlist-module/module.d.ts +580 -0
  125. package/dist/types/src/ma-v2/modules/allowlist-module/module.d.ts.map +1 -0
  126. package/dist/types/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.d.ts +313 -0
  127. package/dist/types/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.d.ts.map +1 -0
  128. package/dist/types/src/ma-v2/modules/native-token-limit-module/module.d.ts +323 -0
  129. package/dist/types/src/ma-v2/modules/native-token-limit-module/module.d.ts.map +1 -0
  130. package/dist/types/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.d.ts +187 -0
  131. package/dist/types/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.d.ts.map +1 -0
  132. package/dist/types/src/ma-v2/modules/paymaster-guard-module/module.d.ts +197 -0
  133. package/dist/types/src/ma-v2/modules/paymaster-guard-module/module.d.ts.map +1 -0
  134. package/dist/types/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.d.ts +46 -0
  135. package/dist/types/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.d.ts.map +1 -0
  136. package/dist/types/src/ma-v2/modules/single-signer-validation/module.d.ts +11 -0
  137. package/dist/types/src/ma-v2/modules/single-signer-validation/module.d.ts.map +1 -0
  138. package/dist/types/src/ma-v2/modules/single-signer-validation/signer.d.ts +240 -0
  139. package/dist/types/src/ma-v2/modules/single-signer-validation/signer.d.ts.map +1 -0
  140. package/dist/types/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.d.ts +230 -0
  141. package/dist/types/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.d.ts.map +1 -0
  142. package/dist/types/src/ma-v2/modules/time-range-module/module.d.ts +246 -0
  143. package/dist/types/src/ma-v2/modules/time-range-module/module.d.ts.map +1 -0
  144. package/dist/types/src/ma-v2/modules/utils.d.ts +92 -0
  145. package/dist/types/src/ma-v2/modules/utils.d.ts.map +1 -0
  146. package/dist/types/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.d.ts +288 -0
  147. package/dist/types/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.d.ts.map +1 -0
  148. package/dist/types/src/ma-v2/utils.d.ts +17 -0
  149. package/dist/types/src/ma-v2/utils.d.ts.map +1 -0
  150. package/dist/types/src/msca/client/alchemyClient.d.ts.map +1 -1
  151. package/dist/types/src/msca/client/client.d.ts +14 -5
  152. package/dist/types/src/msca/client/client.d.ts.map +1 -1
  153. package/dist/types/src/msca/client/multiSigAlchemyClient.d.ts +4 -2
  154. package/dist/types/src/msca/client/multiSigAlchemyClient.d.ts.map +1 -1
  155. package/package.json +11 -5
  156. package/src/light-account/clients/alchemyClient.ts +5 -14
  157. package/src/light-account/clients/client.ts +52 -6
  158. package/src/light-account/clients/multiOwnerAlchemyClient.ts +5 -13
  159. package/src/light-account/clients/multiOwnerLightAccount.ts +64 -8
  160. package/src/ma-v2/abis/accountFactoryAbi.ts +638 -0
  161. package/src/ma-v2/abis/modularAccountAbi.ts +1241 -0
  162. package/src/ma-v2/abis/semiModularAccountBytecodeAbi.ts +1288 -0
  163. package/src/ma-v2/abis/semiModularAccountStorageAbi.ts +1301 -0
  164. package/src/ma-v2/account/nativeSMASigner.ts +121 -0
  165. package/src/ma-v2/account/semiModularAccountV2.ts +289 -0
  166. package/src/ma-v2/actions/common/types.ts +37 -0
  167. package/src/ma-v2/actions/common/utils.ts +103 -0
  168. package/src/ma-v2/actions/install-validation/installValidation.ts +213 -0
  169. package/src/ma-v2/client/client.ts +117 -0
  170. package/src/ma-v2/index.ts +47 -0
  171. package/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.ts +715 -0
  172. package/src/ma-v2/modules/allowlist-module/module.ts +87 -0
  173. package/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.ts +403 -0
  174. package/src/ma-v2/modules/native-token-limit-module/module.ts +21 -0
  175. package/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.ts +241 -0
  176. package/src/ma-v2/modules/paymaster-guard-module/module.ts +35 -0
  177. package/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.ts +330 -0
  178. package/src/ma-v2/modules/single-signer-validation/module.ts +24 -0
  179. package/src/ma-v2/modules/single-signer-validation/signer.ts +127 -0
  180. package/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.ts +295 -0
  181. package/src/ma-v2/modules/time-range-module/module.ts +63 -0
  182. package/src/ma-v2/modules/utils.ts +213 -0
  183. package/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.ts +373 -0
  184. package/src/ma-v2/utils.ts +138 -0
  185. package/src/msca/client/alchemyClient.ts +3 -22
  186. package/src/msca/client/client.ts +157 -13
  187. package/src/msca/client/multiSigAlchemyClient.ts +6 -29
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  createSmartAccountClient,
3
3
  smartAccountClientActions,
4
+ type NotType,
4
5
  type SmartAccountClient,
5
6
  type SmartAccountClientRpcSchema,
6
7
  type SmartAccountSigner,
@@ -35,8 +36,16 @@ import {
35
36
  type MultisigUserOperationContext,
36
37
  } from "../plugins/multisig/index.js";
37
38
  import { multisigSignatureMiddleware } from "../plugins/multisig/middleware.js";
39
+ import type { AlchemyModularAccountClientConfig } from "./alchemyClient.js";
40
+ import {
41
+ createAlchemySmartAccountClient,
42
+ isAlchemyTransport,
43
+ type AlchemySmartAccountClient,
44
+ type AlchemyTransport,
45
+ } from "@account-kit/infra";
46
+ import type { AlchemyMultisigAccountClientConfig } from "./multiSigAlchemyClient.js";
38
47
 
39
- export type CreateMultiOwnerModularAccountClientParams<
48
+ export type CreateMultiOwnerModularAccountClientWithoutAlchemyParams<
40
49
  TTransport extends Transport = Transport,
41
50
  TChain extends Chain | undefined = Chain | undefined,
42
51
  TSigner extends SmartAccountSigner = SmartAccountSigner
@@ -45,8 +54,19 @@ export type CreateMultiOwnerModularAccountClientParams<
45
54
  "transport" | "chain"
46
55
  > &
47
56
  Omit<CreateLightAccountClientParams<TTransport, TChain, TSigner>, "account">;
57
+ export type CreateMultiOwnerModularAccountClientParams<
58
+ TTransport extends Transport = Transport,
59
+ TChain extends Chain | undefined = Chain | undefined,
60
+ TSigner extends SmartAccountSigner = SmartAccountSigner
61
+ > =
62
+ | CreateMultiOwnerModularAccountClientWithoutAlchemyParams<
63
+ TTransport,
64
+ TChain,
65
+ TSigner
66
+ >
67
+ | AlchemyModularAccountClientConfig<TSigner>;
48
68
 
49
- export type CreateMultisigModularAccountClientParams<
69
+ export type CreateMultisigModularAccountClientWithoutAlchemyParams<
50
70
  TTransport extends Transport = Transport,
51
71
  TChain extends Chain | undefined = Chain | undefined,
52
72
  TSigner extends SmartAccountSigner = SmartAccountSigner
@@ -56,11 +76,45 @@ export type CreateMultisigModularAccountClientParams<
56
76
  > &
57
77
  Omit<CreateLightAccountClientParams<TTransport, TChain, TSigner>, "account">;
58
78
 
79
+ export type CreateMultisigModularAccountClientParams<
80
+ TTransport extends Transport = Transport,
81
+ TChain extends Chain | undefined = Chain | undefined,
82
+ TSigner extends SmartAccountSigner = SmartAccountSigner
83
+ > =
84
+ | CreateMultisigModularAccountClientWithoutAlchemyParams<
85
+ TTransport,
86
+ TChain,
87
+ TSigner
88
+ >
89
+ | AlchemyMultisigAccountClientConfig<TSigner>;
90
+
91
+ export function createMultiOwnerModularAccountClient<
92
+ TSigner extends SmartAccountSigner = SmartAccountSigner
93
+ >(
94
+ params: AlchemyModularAccountClientConfig<TSigner> & {
95
+ transport: AlchemyTransport;
96
+ }
97
+ ): Promise<
98
+ AlchemySmartAccountClient<
99
+ Chain | undefined,
100
+ MultiOwnerModularAccount<TSigner>,
101
+ MultiOwnerPluginActions<MultiOwnerModularAccount<TSigner>> &
102
+ PluginManagerActions<MultiOwnerModularAccount<TSigner>> &
103
+ AccountLoupeActions<MultiOwnerModularAccount<TSigner>>
104
+ >
105
+ >;
106
+
59
107
  export function createMultiOwnerModularAccountClient<
108
+ TTransport extends Transport = Transport,
60
109
  TChain extends Chain | undefined = Chain | undefined,
61
110
  TSigner extends SmartAccountSigner = SmartAccountSigner
62
111
  >(
63
- args: CreateMultiOwnerModularAccountClientParams<Transport, TChain, TSigner>
112
+ args: CreateMultiOwnerModularAccountClientParams<
113
+ TTransport,
114
+ TChain,
115
+ TSigner
116
+ > &
117
+ NotType<TTransport, AlchemyTransport>
64
118
  ): Promise<
65
119
  SmartAccountClient<
66
120
  CustomTransport,
@@ -89,6 +143,19 @@ export function createMultiOwnerModularAccountClient<
89
143
  * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())
90
144
  * });
91
145
  * ```
146
+ * @example
147
+ * ```ts
148
+ * import { createMultiOwnerModularAccountClient } from "@account-kit/smart-contracts";
149
+ * import { sepolia, alchemy } from "@account-kit/infra";
150
+ * import { LocalAccountSigner } from "@aa-sdk/core";
151
+ * import { generatePrivateKey } from "viem"
152
+ *
153
+ * const alchemyAccountClient = await createMultiOwnerModularAccountClient({
154
+ * transport: alchemy({ apiKey: "your-api-key" }),
155
+ * chain: sepolia,
156
+ * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())
157
+ * });
158
+ * ```
92
159
  *
93
160
  * @param {CreateMultiOwnerModularAccountClientParams} config The parameters for creating the multi-owner modular account client
94
161
  * @returns {Promise<SmartAccountClient>} A promise that resolves to a `SmartAccountClient` instance with extended plugin actions
@@ -97,12 +164,28 @@ export async function createMultiOwnerModularAccountClient({
97
164
  transport,
98
165
  chain,
99
166
  ...params
100
- }: CreateMultiOwnerModularAccountClientParams): Promise<SmartAccountClient> {
167
+ }: CreateMultiOwnerModularAccountClientParams): Promise<
168
+ SmartAccountClient | AlchemySmartAccountClient
169
+ > {
101
170
  const modularAccount = await createMultiOwnerModularAccount({
102
171
  ...params,
103
172
  transport,
104
173
  chain,
105
174
  });
175
+ if (isAlchemyTransport(transport, chain)) {
176
+ const { opts } = params;
177
+
178
+ return createAlchemySmartAccountClient({
179
+ ...params,
180
+ account: modularAccount,
181
+ transport,
182
+ chain,
183
+ opts,
184
+ })
185
+ .extend(multiOwnerPluginActions)
186
+ .extend(pluginManagerActions)
187
+ .extend(accountLoupeActions);
188
+ }
106
189
 
107
190
  return createSmartAccountClient({
108
191
  ...params,
@@ -116,10 +199,27 @@ export async function createMultiOwnerModularAccountClient({
116
199
  }
117
200
 
118
201
  export function createMultisigModularAccountClient<
202
+ TSigner extends SmartAccountSigner = SmartAccountSigner
203
+ >(
204
+ params: AlchemyMultisigAccountClientConfig<TSigner>
205
+ ): Promise<
206
+ AlchemySmartAccountClient<
207
+ Chain | undefined,
208
+ MultisigModularAccount<TSigner>,
209
+ MultisigPluginActions<MultisigModularAccount<TSigner>> &
210
+ PluginManagerActions<MultisigModularAccount<TSigner>> &
211
+ AccountLoupeActions<MultisigModularAccount<TSigner>>,
212
+ MultisigUserOperationContext
213
+ >
214
+ >;
215
+
216
+ export function createMultisigModularAccountClient<
217
+ TTransport extends Transport = Transport,
119
218
  TChain extends Chain | undefined = Chain | undefined,
120
219
  TSigner extends SmartAccountSigner = SmartAccountSigner
121
220
  >(
122
- args: CreateMultisigModularAccountClientParams<Transport, TChain, TSigner>
221
+ args: CreateMultisigModularAccountClientParams<TTransport, TChain, TSigner> &
222
+ NotType<TTransport, AlchemyTransport>
123
223
  ): Promise<
124
224
  SmartAccountClient<
125
225
  CustomTransport,
@@ -152,6 +252,21 @@ export function createMultisigModularAccountClient<
152
252
  * threshold: 2, // 2 of N signatures
153
253
  * });
154
254
  * ```
255
+ * @example
256
+ * ```ts
257
+ * import { createMultisigModularAccountClient } from "@account-kit/smart-contracts";
258
+ * import { sepolia } from "@account-kit/infra";
259
+ * import { LocalAccountSigner } from "@aa-sdk/core";
260
+ * import { generatePrivateKey } from "viem"
261
+ *
262
+ * const alchemyAccountClient = await createMultisigModularAccountClient({
263
+ * transport: alchemy({ apiKey: "your-api-key" }),
264
+ * chain: sepolia,
265
+ * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),
266
+ * owners: [...], // other owners on the account
267
+ * threshold: 2, // 2 of N signatures
268
+ * });
269
+ * ```
155
270
  *
156
271
  * @param {CreateMultisigModularAccountClientParams} config the parameters for configuring the multisig modular account client
157
272
  * @returns {Promise<SmartAccountClient<Transport, Chain, MultisigModularAccount<SmartAccountSigner>, {}, SmartAccountClientRpcSchema, MultisigUserOperationContext>>} a promise that resolves to a `SmartAccountClient` object extended with the multisig modular account and additional actions
@@ -161,20 +276,49 @@ export async function createMultisigModularAccountClient({
161
276
  chain,
162
277
  ...params
163
278
  }: CreateMultisigModularAccountClientParams): Promise<
164
- SmartAccountClient<
165
- Transport,
166
- Chain,
167
- MultisigModularAccount<SmartAccountSigner>,
168
- {},
169
- SmartAccountClientRpcSchema,
170
- MultisigUserOperationContext
171
- >
279
+ | SmartAccountClient<
280
+ Transport,
281
+ Chain,
282
+ MultisigModularAccount<SmartAccountSigner>,
283
+ {},
284
+ SmartAccountClientRpcSchema,
285
+ MultisigUserOperationContext
286
+ >
287
+ | AlchemySmartAccountClient<
288
+ Chain | undefined,
289
+ MultisigModularAccount<SmartAccountSigner>,
290
+ MultisigPluginActions<MultisigModularAccount<SmartAccountSigner>> &
291
+ PluginManagerActions<MultisigModularAccount<SmartAccountSigner>> &
292
+ AccountLoupeActions<MultisigModularAccount<SmartAccountSigner>>,
293
+ MultisigUserOperationContext
294
+ >
172
295
  > {
173
296
  const modularAccount = await createMultisigModularAccount({
174
297
  ...params,
175
298
  transport,
176
299
  chain,
177
300
  });
301
+ if (isAlchemyTransport(transport, chain)) {
302
+ // Need to fit the type into this since the previous multiSigAlchemyClient had it at this point, but without an Value as Type should be safe
303
+ // And the createAlchemySmartAccountClient signUserOperation could not infer without this
304
+ let config: AlchemyMultisigAccountClientConfig = {
305
+ ...params,
306
+ chain,
307
+ transport,
308
+ };
309
+ const { opts } = config;
310
+
311
+ return createAlchemySmartAccountClient({
312
+ ...config,
313
+ account: modularAccount,
314
+ opts,
315
+ signUserOperation: multisigSignatureMiddleware,
316
+ })
317
+ .extend(smartAccountClientActions)
318
+ .extend(multisigPluginActions)
319
+ .extend(pluginManagerActions)
320
+ .extend(accountLoupeActions);
321
+ }
178
322
 
179
323
  const client = createSmartAccountClient({
180
324
  ...params,
@@ -1,18 +1,11 @@
1
+ import { type SmartAccountSigner } from "@aa-sdk/core";
1
2
  import {
2
- smartAccountClientActions,
3
- type SmartAccountSigner,
4
- } from "@aa-sdk/core";
5
- import {
6
- createAlchemySmartAccountClient,
7
3
  type AlchemySmartAccountClient,
8
4
  type AlchemySmartAccountClientConfig,
5
+ type AlchemyTransport,
9
6
  } from "@account-kit/infra";
10
7
  import {
11
- accountLoupeActions,
12
- createMultisigModularAccount,
13
- multisigPluginActions,
14
- multisigSignatureMiddleware,
15
- pluginManagerActions,
8
+ createMultisigModularAccountClient,
16
9
  type AccountLoupeActions,
17
10
  type CreateMultisigModularAccountParams,
18
11
  type LightAccount,
@@ -38,7 +31,7 @@ export type AlchemyMultisigAccountClientConfig<
38
31
  MultisigUserOperationContext
39
32
  >,
40
33
  "account"
41
- >;
34
+ > & { transport: AlchemyTransport };
42
35
 
43
36
  export function createMultisigAccountAlchemyClient<
44
37
  TSigner extends SmartAccountSigner = SmartAccountSigner
@@ -74,6 +67,7 @@ export function createMultisigAccountAlchemyClient<
74
67
  * });
75
68
  * ```
76
69
  *
70
+ * @deprecated Use createModularAccountClient instead of this function, we are switching based on the transport
77
71
  * @param {AlchemyMultisigAccountClientConfig} config The configuration for the Alchemy multisig account client
78
72
  * @returns {Promise<AlchemySmartAccountClient<Transport, Chain | undefined, MultisigModularAccount<SmartAccountSigner>, MultisigPluginActions<MultisigModularAccount<SmartAccountSigner>> & PluginManagerActions<MultisigModularAccount<SmartAccountSigner>> & AccountLoupeActions<MultisigModularAccount<SmartAccountSigner>>, MultisigUserOperationContext>>} A promise that resolves to an Alchemy Smart Account Client for multisig accounts with extended functionalities.
79
73
  */
@@ -89,22 +83,5 @@ export async function createMultisigAccountAlchemyClient(
89
83
  MultisigUserOperationContext
90
84
  >
91
85
  > {
92
- const { transport, opts, chain } = config;
93
-
94
- const account = await createMultisigModularAccount({
95
- ...config,
96
- transport,
97
- chain,
98
- });
99
-
100
- return createAlchemySmartAccountClient({
101
- ...config,
102
- account,
103
- opts,
104
- signUserOperation: multisigSignatureMiddleware,
105
- })
106
- .extend(smartAccountClientActions)
107
- .extend(multisigPluginActions)
108
- .extend(pluginManagerActions)
109
- .extend(accountLoupeActions);
86
+ return createMultisigModularAccountClient(config);
110
87
  }