@alchemy/wallet-apis 5.0.0-beta.3 → 5.0.0-beta.31

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 (201) hide show
  1. package/README.md +3 -1
  2. package/dist/esm/actions/prepareCalls.d.ts +8 -3
  3. package/dist/esm/actions/prepareCalls.js +8 -0
  4. package/dist/esm/actions/prepareCalls.js.map +1 -1
  5. package/dist/esm/actions/requestAccount.d.ts +4 -3
  6. package/dist/esm/actions/requestAccount.js.map +1 -1
  7. package/dist/esm/actions/sendCalls.d.ts +5 -2
  8. package/dist/esm/actions/sendCalls.js +5 -2
  9. package/dist/esm/actions/sendCalls.js.map +1 -1
  10. package/dist/esm/actions/sendPreparedCalls.d.ts +3 -1
  11. package/dist/esm/actions/sendPreparedCalls.js.map +1 -1
  12. package/dist/esm/actions/signPreparedCalls.d.ts +2 -0
  13. package/dist/esm/actions/signPreparedCalls.js +14 -1
  14. package/dist/esm/actions/signPreparedCalls.js.map +1 -1
  15. package/dist/esm/actions/signSignatureRequest.d.ts +4 -4
  16. package/dist/esm/actions/signSignatureRequest.js +1 -1
  17. package/dist/esm/actions/signSignatureRequest.js.map +1 -1
  18. package/dist/esm/actions/signTypedData.d.ts +14 -4
  19. package/dist/esm/actions/signTypedData.js.map +1 -1
  20. package/dist/esm/actions/solana/getCallsStatus.d.ts +24 -0
  21. package/dist/esm/actions/solana/getCallsStatus.js +44 -0
  22. package/dist/esm/actions/solana/getCallsStatus.js.map +1 -0
  23. package/dist/esm/actions/solana/prepareCalls.d.ts +46 -0
  24. package/dist/esm/actions/solana/prepareCalls.js +70 -0
  25. package/dist/esm/actions/solana/prepareCalls.js.map +1 -0
  26. package/dist/esm/actions/solana/sendCalls.d.ts +34 -0
  27. package/dist/esm/actions/solana/sendCalls.js +44 -0
  28. package/dist/esm/actions/solana/sendCalls.js.map +1 -0
  29. package/dist/esm/actions/solana/sendPreparedCalls.d.ts +24 -0
  30. package/dist/esm/actions/solana/sendPreparedCalls.js +32 -0
  31. package/dist/esm/actions/solana/sendPreparedCalls.js.map +1 -0
  32. package/dist/esm/actions/solana/signPreparedCalls.d.ts +23 -0
  33. package/dist/esm/actions/solana/signPreparedCalls.js +24 -0
  34. package/dist/esm/actions/solana/signPreparedCalls.js.map +1 -0
  35. package/dist/esm/actions/solana/signSignatureRequest.d.ts +10 -0
  36. package/dist/esm/actions/solana/signSignatureRequest.js +33 -0
  37. package/dist/esm/actions/solana/signSignatureRequest.js.map +1 -0
  38. package/dist/esm/actions/solana/waitForCallsStatus.d.ts +24 -0
  39. package/dist/esm/actions/solana/waitForCallsStatus.js +46 -0
  40. package/dist/esm/actions/solana/waitForCallsStatus.js.map +1 -0
  41. package/dist/esm/actions/undelegateAccount.d.ts +37 -0
  42. package/dist/esm/actions/undelegateAccount.js +49 -0
  43. package/dist/esm/actions/undelegateAccount.js.map +1 -0
  44. package/dist/esm/adapters/SolanaSignerError.d.ts +4 -0
  45. package/dist/esm/adapters/SolanaSignerError.js +13 -0
  46. package/dist/esm/adapters/SolanaSignerError.js.map +1 -0
  47. package/dist/esm/adapters/fromKeypair.d.ts +21 -0
  48. package/dist/esm/adapters/fromKeypair.js +46 -0
  49. package/dist/esm/adapters/fromKeypair.js.map +1 -0
  50. package/dist/esm/adapters/fromKitSigner.d.ts +21 -0
  51. package/dist/esm/adapters/fromKitSigner.js +61 -0
  52. package/dist/esm/adapters/fromKitSigner.js.map +1 -0
  53. package/dist/esm/adapters/fromWalletAdapter.d.ts +26 -0
  54. package/dist/esm/adapters/fromWalletAdapter.js +45 -0
  55. package/dist/esm/adapters/fromWalletAdapter.js.map +1 -0
  56. package/dist/esm/adapters/fromWalletStandard.d.ts +31 -0
  57. package/dist/esm/adapters/fromWalletStandard.js +53 -0
  58. package/dist/esm/adapters/fromWalletStandard.js.map +1 -0
  59. package/dist/esm/adapters/resolveSignerSlot.d.ts +10 -0
  60. package/dist/esm/adapters/resolveSignerSlot.js +39 -0
  61. package/dist/esm/adapters/resolveSignerSlot.js.map +1 -0
  62. package/dist/esm/client.d.ts +29 -14
  63. package/dist/esm/client.js +63 -19
  64. package/dist/esm/client.js.map +1 -1
  65. package/dist/esm/decorators/smartWalletActions.d.ts +2 -0
  66. package/dist/esm/decorators/smartWalletActions.js +4 -2
  67. package/dist/esm/decorators/smartWalletActions.js.map +1 -1
  68. package/dist/esm/decorators/solanaSmartWalletActions.d.ts +16 -0
  69. package/dist/esm/decorators/solanaSmartWalletActions.js +16 -0
  70. package/dist/esm/decorators/solanaSmartWalletActions.js.map +1 -0
  71. package/dist/esm/experimental/actions/requestQuoteV0.d.ts +48 -11
  72. package/dist/esm/experimental/actions/requestQuoteV0.js +8 -4
  73. package/dist/esm/experimental/actions/requestQuoteV0.js.map +1 -1
  74. package/dist/esm/experimental/swapActionsDecorator.d.ts +3 -0
  75. package/dist/esm/experimental/swapActionsDecorator.js.map +1 -1
  76. package/dist/esm/exports/index.d.ts +5 -3
  77. package/dist/esm/exports/index.js +1 -0
  78. package/dist/esm/exports/index.js.map +1 -1
  79. package/dist/esm/exports/solana.d.ts +24 -0
  80. package/dist/esm/exports/solana.js +15 -0
  81. package/dist/esm/exports/solana.js.map +1 -0
  82. package/dist/esm/types.d.ts +28 -4
  83. package/dist/esm/types.js.map +1 -1
  84. package/dist/esm/utils/assertions.d.ts +4 -2
  85. package/dist/esm/utils/assertions.js +6 -0
  86. package/dist/esm/utils/assertions.js.map +1 -1
  87. package/dist/esm/utils/capabilities.d.ts +22 -6
  88. package/dist/esm/utils/capabilities.js +19 -2
  89. package/dist/esm/utils/capabilities.js.map +1 -1
  90. package/dist/esm/utils/format.d.ts +2 -2
  91. package/dist/esm/utils/format.js +4 -3
  92. package/dist/esm/utils/format.js.map +1 -1
  93. package/dist/esm/utils/schema.d.ts +14 -14
  94. package/dist/esm/utils/schema.js +35 -39
  95. package/dist/esm/utils/schema.js.map +1 -1
  96. package/dist/esm/version.d.ts +1 -1
  97. package/dist/esm/version.js +1 -1
  98. package/dist/esm/version.js.map +1 -1
  99. package/dist/types/actions/prepareCalls.d.ts +8 -3
  100. package/dist/types/actions/prepareCalls.d.ts.map +1 -1
  101. package/dist/types/actions/requestAccount.d.ts +4 -3
  102. package/dist/types/actions/requestAccount.d.ts.map +1 -1
  103. package/dist/types/actions/sendCalls.d.ts +5 -2
  104. package/dist/types/actions/sendCalls.d.ts.map +1 -1
  105. package/dist/types/actions/sendPreparedCalls.d.ts +3 -1
  106. package/dist/types/actions/sendPreparedCalls.d.ts.map +1 -1
  107. package/dist/types/actions/signPreparedCalls.d.ts +2 -0
  108. package/dist/types/actions/signPreparedCalls.d.ts.map +1 -1
  109. package/dist/types/actions/signSignatureRequest.d.ts +4 -4
  110. package/dist/types/actions/signSignatureRequest.d.ts.map +1 -1
  111. package/dist/types/actions/signTypedData.d.ts +14 -4
  112. package/dist/types/actions/signTypedData.d.ts.map +1 -1
  113. package/dist/types/actions/solana/getCallsStatus.d.ts +25 -0
  114. package/dist/types/actions/solana/getCallsStatus.d.ts.map +1 -0
  115. package/dist/types/actions/solana/prepareCalls.d.ts +47 -0
  116. package/dist/types/actions/solana/prepareCalls.d.ts.map +1 -0
  117. package/dist/types/actions/solana/sendCalls.d.ts +35 -0
  118. package/dist/types/actions/solana/sendCalls.d.ts.map +1 -0
  119. package/dist/types/actions/solana/sendPreparedCalls.d.ts +25 -0
  120. package/dist/types/actions/solana/sendPreparedCalls.d.ts.map +1 -0
  121. package/dist/types/actions/solana/signPreparedCalls.d.ts +24 -0
  122. package/dist/types/actions/solana/signPreparedCalls.d.ts.map +1 -0
  123. package/dist/types/actions/solana/signSignatureRequest.d.ts +11 -0
  124. package/dist/types/actions/solana/signSignatureRequest.d.ts.map +1 -0
  125. package/dist/types/actions/solana/waitForCallsStatus.d.ts +25 -0
  126. package/dist/types/actions/solana/waitForCallsStatus.d.ts.map +1 -0
  127. package/dist/types/actions/undelegateAccount.d.ts +38 -0
  128. package/dist/types/actions/undelegateAccount.d.ts.map +1 -0
  129. package/dist/types/adapters/SolanaSignerError.d.ts +5 -0
  130. package/dist/types/adapters/SolanaSignerError.d.ts.map +1 -0
  131. package/dist/types/adapters/fromKeypair.d.ts +22 -0
  132. package/dist/types/adapters/fromKeypair.d.ts.map +1 -0
  133. package/dist/types/adapters/fromKitSigner.d.ts +22 -0
  134. package/dist/types/adapters/fromKitSigner.d.ts.map +1 -0
  135. package/dist/types/adapters/fromWalletAdapter.d.ts +27 -0
  136. package/dist/types/adapters/fromWalletAdapter.d.ts.map +1 -0
  137. package/dist/types/adapters/fromWalletStandard.d.ts +32 -0
  138. package/dist/types/adapters/fromWalletStandard.d.ts.map +1 -0
  139. package/dist/types/adapters/resolveSignerSlot.d.ts +11 -0
  140. package/dist/types/adapters/resolveSignerSlot.d.ts.map +1 -0
  141. package/dist/types/client.d.ts +29 -14
  142. package/dist/types/client.d.ts.map +1 -1
  143. package/dist/types/decorators/smartWalletActions.d.ts +2 -0
  144. package/dist/types/decorators/smartWalletActions.d.ts.map +1 -1
  145. package/dist/types/decorators/solanaSmartWalletActions.d.ts +17 -0
  146. package/dist/types/decorators/solanaSmartWalletActions.d.ts.map +1 -0
  147. package/dist/types/experimental/actions/requestQuoteV0.d.ts +48 -11
  148. package/dist/types/experimental/actions/requestQuoteV0.d.ts.map +1 -1
  149. package/dist/types/experimental/swapActionsDecorator.d.ts +3 -0
  150. package/dist/types/experimental/swapActionsDecorator.d.ts.map +1 -1
  151. package/dist/types/exports/index.d.ts +5 -3
  152. package/dist/types/exports/index.d.ts.map +1 -1
  153. package/dist/types/exports/solana.d.ts +25 -0
  154. package/dist/types/exports/solana.d.ts.map +1 -0
  155. package/dist/types/types.d.ts +28 -4
  156. package/dist/types/types.d.ts.map +1 -1
  157. package/dist/types/utils/assertions.d.ts +4 -2
  158. package/dist/types/utils/assertions.d.ts.map +1 -1
  159. package/dist/types/utils/capabilities.d.ts +22 -6
  160. package/dist/types/utils/capabilities.d.ts.map +1 -1
  161. package/dist/types/utils/format.d.ts +2 -2
  162. package/dist/types/utils/format.d.ts.map +1 -1
  163. package/dist/types/utils/schema.d.ts +14 -14
  164. package/dist/types/utils/schema.d.ts.map +1 -1
  165. package/dist/types/version.d.ts +1 -1
  166. package/dist/types/version.d.ts.map +1 -1
  167. package/package.json +29 -11
  168. package/src/actions/prepareCalls.ts +21 -3
  169. package/src/actions/requestAccount.ts +7 -5
  170. package/src/actions/sendCalls.ts +5 -2
  171. package/src/actions/sendPreparedCalls.ts +4 -1
  172. package/src/actions/signPreparedCalls.ts +15 -2
  173. package/src/actions/signSignatureRequest.ts +8 -8
  174. package/src/actions/signTypedData.ts +15 -7
  175. package/src/actions/solana/getCallsStatus.ts +79 -0
  176. package/src/actions/solana/prepareCalls.ts +120 -0
  177. package/src/actions/solana/sendCalls.ts +66 -0
  178. package/src/actions/solana/sendPreparedCalls.ts +65 -0
  179. package/src/actions/solana/signPreparedCalls.ts +50 -0
  180. package/src/actions/solana/signSignatureRequest.ts +63 -0
  181. package/src/actions/solana/waitForCallsStatus.ts +84 -0
  182. package/src/actions/undelegateAccount.ts +68 -0
  183. package/src/adapters/SolanaSignerError.ts +5 -0
  184. package/src/adapters/fromKeypair.ts +58 -0
  185. package/src/adapters/fromKitSigner.ts +82 -0
  186. package/src/adapters/fromWalletAdapter.ts +58 -0
  187. package/src/adapters/fromWalletStandard.ts +100 -0
  188. package/src/adapters/resolveSignerSlot.ts +46 -0
  189. package/src/client.ts +131 -18
  190. package/src/decorators/smartWalletActions.ts +11 -2
  191. package/src/decorators/solanaSmartWalletActions.ts +62 -0
  192. package/src/experimental/actions/requestQuoteV0.ts +40 -15
  193. package/src/experimental/swapActionsDecorator.ts +3 -0
  194. package/src/exports/index.ts +10 -4
  195. package/src/exports/solana.ts +36 -0
  196. package/src/types.ts +38 -7
  197. package/src/utils/assertions.ts +17 -2
  198. package/src/utils/capabilities.ts +40 -8
  199. package/src/utils/format.ts +8 -3
  200. package/src/utils/schema.ts +58 -69
  201. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/utils/capabilities.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n PrepareCallsCapabilities as PrepareCallsCapabilitiesSchema,\n SendPreparedCallsCapabilities as SendPreparedCallsCapabilitiesSchema,\n} from \"@alchemy/wallet-api-types/capabilities\";\nimport type { StaticDecode } from \"typebox\";\nimport type { InnerWalletApiClient } from \"../types.js\";\n\n/**\n * Decoded capabilities matching the schema shape (uses `paymasterService` key).\n * `ResolveCapabilities` renames this to `paymaster` for client-facing types.\n */\ntype DecodedPrepareCallsCaps = StaticDecode<\n typeof PrepareCallsCapabilitiesSchema\n>;\ntype DecodedSendPreparedCallsCaps = StaticDecode<\n typeof SendPreparedCallsCapabilitiesSchema\n>;\n\n/**\n * Renames `paymasterService` (RPC) to `paymaster` in a capabilities type. This\n * is because our RPC schema's paymasterService capability does not exactly match\n * the shape of the new spec, so we want to use a different name in our client\n * types to avoid confusion and be compatible with Viem's types.\n */\ntype ResolveCapabilities<T> = T extends {\n paymasterService?: infer P;\n}\n ? Omit<T, \"paymasterService\"> & { paymaster?: P }\n : T;\n\nexport type PrepareCallsCapabilities =\n ResolveCapabilities<DecodedPrepareCallsCaps>;\n\nexport type SendPreparedCallsCapabilities =\n ResolveCapabilities<DecodedSendPreparedCallsCaps>;\n\n/**\n * Transforms a type so that any `capabilities` field uses `paymaster`\n * instead of `paymasterService` (RPC).\n */\nexport type WithCapabilities<T> = T extends {\n capabilities?: infer C;\n}\n ? Omit<T, \"capabilities\"> & {\n capabilities?: ResolveCapabilities<NonNullable<C>>;\n }\n : T;\n\nfunction hasNoPaymasterField(\n value: object,\n): value is DecodedPrepareCallsCaps | DecodedSendPreparedCallsCaps {\n return !(\"paymaster\" in value);\n}\n\nfunction hasNoPaymasterServiceField(\n value: object,\n): value is PrepareCallsCapabilities | SendPreparedCallsCapabilities {\n return !(\"paymasterService\" in value);\n}\n\n/**\n * Converts capabilities (with `paymaster`) to RPC capabilities (with `paymasterService`)\n * for use with Value.Encode before sending to the RPC.\n *\n * @param {PrepareCallsCapabilities | SendPreparedCallsCapabilities | undefined} capabilities - Capabilities object containing a `paymaster` field\n * @returns {DecodedPrepareCallsCaps | DecodedSendPreparedCallsCaps | undefined} RPC capabilities with `paymasterService`, or undefined if input is undefined\n */\nexport function toRpcCapabilities(\n capabilities:\n | PrepareCallsCapabilities\n | SendPreparedCallsCapabilities\n | undefined,\n): DecodedPrepareCallsCaps | DecodedSendPreparedCallsCaps | undefined {\n if (!capabilities) return undefined;\n const { paymaster, ...rest } = capabilities;\n const result =\n paymaster !== undefined\n ? { ...rest, paymasterService: paymaster }\n : { ...rest };\n if (hasNoPaymasterField(result)) return result;\n return undefined;\n}\n\n/**\n * Converts RPC capabilities (with `paymasterService`) from Value.Decode\n * to capabilities (with `paymaster`).\n *\n * @param {DecodedPrepareCallsCaps | DecodedSendPreparedCallsCaps | undefined} capabilities - RPC capabilities object containing a `paymasterService` field\n * @returns {PrepareCallsCapabilities | SendPreparedCallsCapabilities | undefined} Capabilities with `paymaster`, or undefined if input is undefined\n */\nexport function fromRpcCapabilities(\n capabilities:\n | DecodedPrepareCallsCaps\n | DecodedSendPreparedCallsCaps\n | undefined,\n): PrepareCallsCapabilities | SendPreparedCallsCapabilities | undefined {\n if (!capabilities) return undefined;\n if (\"paymasterService\" in capabilities) {\n const { paymasterService, ...rest } = capabilities;\n const result =\n paymasterService !== undefined\n ? { ...rest, paymaster: paymasterService }\n : { ...rest };\n if (hasNoPaymasterServiceField(result)) return result;\n return undefined;\n }\n if (hasNoPaymasterServiceField(capabilities)) return capabilities;\n return undefined;\n}\n\n/**\n * Merges client capabilities with capabilities from the request.\n * Uses policyId (singular) when there's one policy, policyIds (array) when multiple.\n *\n * @param {InnerWalletApiClient} client - The inner wallet API client (potentially including global capabilities like policy IDs)\n * @param {T | undefined} capabilities - Request capabilities to merge with, if any\n * @returns {T | undefined} The merged capabilities object, or original capabilities if no capability configuration exists on the client\n */\nexport const mergeClientCapabilities = <\n T extends PrepareCallsCapabilities | SendPreparedCallsCapabilities,\n>(\n client: InnerWalletApiClient,\n capabilities: T | undefined,\n): T | undefined => {\n if (!client.policyIds?.length || capabilities?.paymaster) {\n return capabilities;\n }\n\n return {\n ...capabilities,\n paymaster:\n client.policyIds.length === 1\n ? { policyId: client.policyIds[0] }\n : { policyIds: client.policyIds },\n } as T;\n};\n\n/**\n * Extracts capabilities from prepareCalls that are usable for sendPreparedCalls.\n * Only permissions and paymaster (policyId/policyIds & webhookData) are supported.\n *\n * @param {PrepareCallsCapabilities | undefined} capabilities - The prepareCalls capabilities\n * @returns {SendPreparedCallsCapabilities | undefined} The sendPreparedCalls capabilities, or undefined if no relevant capabilities exist\n */\nexport const extractCapabilitiesForSending = (\n capabilities: PrepareCallsCapabilities | undefined,\n): SendPreparedCallsCapabilities | undefined => {\n if (capabilities?.permissions == null && capabilities?.paymaster == null) {\n return undefined;\n }\n\n const paymaster = capabilities.paymaster;\n\n return {\n permissions: capabilities.permissions,\n paymaster:\n paymaster != null\n ? {\n ...(\"policyId\" in paymaster\n ? { policyId: paymaster.policyId }\n : { policyIds: paymaster.policyIds }),\n webhookData: paymaster.webhookData,\n }\n : undefined,\n };\n};\n"]}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/utils/capabilities.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n PrepareCallsCapabilities as PrepareCallsCapabilitiesSchema,\n SendPreparedCallsCapabilities as SendPreparedCallsCapabilitiesSchema,\n} from \"@alchemy/wallet-api-types/capabilities\";\nimport type { z } from \"zod\";\nimport type {\n InnerWalletApiClient,\n InnerSolanaWalletApiClient,\n} from \"../types.js\";\n\n/**\n * Decoded capabilities matching the schema shape (uses `paymasterService` key).\n * `ResolveCapabilities` renames this to `paymaster` for client-facing types.\n */\ntype DecodedPrepareCallsCaps = z.output<typeof PrepareCallsCapabilitiesSchema>;\ntype DecodedSendPreparedCallsCaps = z.output<\n typeof SendPreparedCallsCapabilitiesSchema\n>;\n\n/**\n * Renames `paymasterService` (RPC) to `paymaster` in a capabilities type. This\n * is because our RPC schema's paymasterService capability does not exactly match\n * the shape of the new spec, so we want to use a different name in our client\n * types to avoid confusion and be compatible with Viem's types.\n */\ntype ResolveCapabilities<T> = T extends {\n paymasterService?: infer P;\n}\n ? Omit<T, \"paymasterService\"> & { paymaster?: P }\n : T;\n\nexport type PrepareCallsCapabilities =\n ResolveCapabilities<DecodedPrepareCallsCaps>;\n\nexport type SendPreparedCallsCapabilities =\n ResolveCapabilities<DecodedSendPreparedCallsCaps>;\n\n/**\n * Transforms a type so that any `capabilities` field uses `paymaster`\n * instead of `paymasterService` (RPC).\n */\nexport type WithCapabilities<T> = T extends {\n capabilities?: infer C;\n}\n ? Omit<T, \"capabilities\"> & {\n capabilities?: ResolveCapabilities<NonNullable<C>>;\n }\n : T;\n\nfunction hasNoPaymasterField(\n value: object,\n): value is DecodedPrepareCallsCaps | DecodedSendPreparedCallsCaps {\n return !(\"paymaster\" in value);\n}\n\nfunction hasNoPaymasterServiceField(\n value: object,\n): value is PrepareCallsCapabilities | SendPreparedCallsCapabilities {\n return !(\"paymasterService\" in value);\n}\n\n/**\n * Converts capabilities (with `paymaster`) to RPC capabilities (with `paymasterService`)\n * for use with `encode` before sending to the RPC.\n *\n * @param {PrepareCallsCapabilities | SendPreparedCallsCapabilities | undefined} capabilities - Capabilities object containing a `paymaster` field\n * @returns {DecodedPrepareCallsCaps | DecodedSendPreparedCallsCaps | undefined} RPC capabilities with `paymasterService`, or undefined if input is undefined\n */\nexport function toRpcCapabilities(\n capabilities:\n | PrepareCallsCapabilities\n | SendPreparedCallsCapabilities\n | undefined,\n): DecodedPrepareCallsCaps | DecodedSendPreparedCallsCaps | undefined {\n if (!capabilities) return undefined;\n const { paymaster, ...rest } = capabilities;\n const result =\n paymaster !== undefined\n ? { ...rest, paymasterService: paymaster }\n : { ...rest };\n if (hasNoPaymasterField(result)) return result;\n return undefined;\n}\n\n/**\n * Converts RPC capabilities (with `paymasterService`) from `decode`\n * to capabilities (with `paymaster`).\n *\n * @param {DecodedPrepareCallsCaps | DecodedSendPreparedCallsCaps | undefined} capabilities - RPC capabilities object containing a `paymasterService` field\n * @returns {PrepareCallsCapabilities | SendPreparedCallsCapabilities | undefined} Capabilities with `paymaster`, or undefined if input is undefined\n */\nexport function fromRpcCapabilities(\n capabilities:\n | DecodedPrepareCallsCaps\n | DecodedSendPreparedCallsCaps\n | undefined,\n): PrepareCallsCapabilities | SendPreparedCallsCapabilities | undefined {\n if (!capabilities) return undefined;\n if (\"paymasterService\" in capabilities) {\n const { paymasterService, ...rest } = capabilities;\n const result =\n paymasterService !== undefined\n ? { ...rest, paymaster: paymasterService }\n : { ...rest };\n if (hasNoPaymasterServiceField(result)) return result;\n return undefined;\n }\n if (hasNoPaymasterServiceField(capabilities)) return capabilities;\n return undefined;\n}\n\n/**\n * Merges client capabilities with capabilities from the request.\n * Uses policyId (singular) when there's one policy, policyIds (array) when multiple.\n *\n * @param {InnerWalletApiClient} client - The inner wallet API client (potentially including global capabilities like policy IDs)\n * @param {T | undefined} capabilities - Request capabilities to merge with, if any\n * @returns {T | undefined} The merged capabilities object, or original capabilities if no capability configuration exists on the client\n */\nexport const mergeClientCapabilities = <\n T extends PrepareCallsCapabilities | SendPreparedCallsCapabilities,\n>(\n client: InnerWalletApiClient,\n capabilities: T | undefined,\n): T | undefined => {\n if (!client.policyIds?.length || capabilities?.paymaster) {\n return capabilities;\n }\n\n return {\n ...capabilities,\n paymaster:\n client.policyIds.length === 1\n ? { policyId: client.policyIds[0] }\n : { policyIds: client.policyIds },\n } as T;\n};\n\nexport type SolanaPaymasterCapability = {\n policyId: string;\n webhookData?: string;\n};\n\nexport type SolanaPrepareCallsCapabilities = {\n paymaster?: SolanaPaymasterCapability;\n};\n\n/**\n * Merges Solana client-level capabilities (policyId from factory) with\n * request-level capabilities. Request-level takes priority if provided.\n *\n * @param {InnerSolanaWalletApiClient} client - The Solana wallet API client\n * @param {SolanaPrepareCallsCapabilities | undefined} capabilities - Request capabilities to merge with\n * @returns {SolanaPrepareCallsCapabilities | undefined} The merged capabilities\n */\nexport const mergeSolanaClientCapabilities = (\n client: InnerSolanaWalletApiClient,\n capabilities: SolanaPrepareCallsCapabilities | undefined,\n): SolanaPrepareCallsCapabilities | undefined => {\n if (!client.policyIds?.length || capabilities?.paymaster) {\n return capabilities;\n }\n\n return {\n ...capabilities,\n paymaster: { policyId: client.policyIds[0] },\n };\n};\n\n/**\n * Extracts capabilities from prepareCalls that are usable for sendPreparedCalls.\n * Only permissions and paymaster (policyId/policyIds & webhookData) are supported.\n *\n * @param {PrepareCallsCapabilities | undefined} capabilities - The prepareCalls capabilities\n * @returns {SendPreparedCallsCapabilities | undefined} The sendPreparedCalls capabilities, or undefined if no relevant capabilities exist\n */\nexport const extractCapabilitiesForSending = (\n capabilities: PrepareCallsCapabilities | undefined,\n): SendPreparedCallsCapabilities | undefined => {\n if (capabilities?.permissions == null && capabilities?.paymaster == null) {\n return undefined;\n }\n\n const paymaster = capabilities.paymaster;\n\n return {\n permissions: capabilities.permissions,\n paymaster:\n paymaster != null\n ? {\n ...(\"policyId\" in paymaster\n ? { policyId: paymaster.policyId }\n : { policyIds: paymaster.policyIds }),\n webhookData: paymaster.webhookData,\n }\n : undefined,\n };\n};\n"]}
@@ -1,7 +1,7 @@
1
- import { type Hex, type SignableMessage, type TypedDataDefinition } from "viem";
1
+ import { type Hex, type SignableMessage, type TypedData, type TypedDataDefinition } from "viem";
2
2
  import type { TypedDataDefinition as WalletServerTypedDataDefinition } from "@alchemy/wallet-api-types";
3
3
  export declare const castToHex: (val: string | number | bigint | Hex) => Hex;
4
4
  export declare const signableMessageToJsonSafe: (message: SignableMessage) => string | {
5
5
  raw: Hex;
6
6
  };
7
- export declare const typedDataToJsonSafe: ({ domain, primaryType, message, types, }: TypedDataDefinition) => WalletServerTypedDataDefinition;
7
+ export declare const typedDataToJsonSafe: ({ domain, primaryType, message, types, }: TypedDataDefinition<TypedData | Record<string, unknown>>) => WalletServerTypedDataDefinition;
@@ -1,4 +1,4 @@
1
- import { isHex, toHex, bytesToHex, getTypesForEIP712Domain, } from "viem";
1
+ import { isHex, toHex, bytesToHex, getTypesForEIP712Domain, validateTypedData, } from "viem";
2
2
  export const castToHex = (val) => {
3
3
  if (isHex(val)) {
4
4
  return val;
@@ -14,8 +14,9 @@ export const signableMessageToJsonSafe = (message) => {
14
14
  };
15
15
  };
16
16
  // Purposefully not using `formatTypedData` from the wallet server types pkg
17
- // here, since that would require typebox at runtime (which breaks RN).
17
+ // here, since that would require zod at runtime (which breaks RN).
18
18
  export const typedDataToJsonSafe = ({ domain, primaryType, message, types, }) => {
19
+ validateTypedData({ domain, primaryType, message, types });
19
20
  return {
20
21
  domain: {
21
22
  ...domain,
@@ -26,7 +27,7 @@ export const typedDataToJsonSafe = ({ domain, primaryType, message, types, }) =>
26
27
  types: {
27
28
  ...Object.fromEntries(Object.entries(types).map(([key, value]) => [
28
29
  key,
29
- value ? [...value] : [],
30
+ Array.isArray(value) ? [...value] : [],
30
31
  ])),
31
32
  EIP712Domain: [...getTypesForEIP712Domain({ domain })],
32
33
  },
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/utils/format.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,KAAK,EAGL,UAAU,EAEV,uBAAuB,GACxB,MAAM,MAAM,CAAC;AAGd,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAmC,EAAO,EAAE;IACpE,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,OAAwB,EACD,EAAE;IACzB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO;QACL,GAAG,EACD,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;KAC1E,CAAC;AACJ,CAAC,CAAC;AAEF,4EAA4E;AAC5E,uEAAuE;AACvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,MAAM,EACN,WAAW,EACX,OAAO,EACP,KAAK,GACe,EAAmC,EAAE;IACzD,OAAO;QACL,MAAM,EAAE;YACN,GAAG,MAAM;YACT,OAAO,EACL,OAAO,MAAM,EAAE,OAAO,KAAK,QAAQ;gBACjC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;gBACxB,CAAC,CAAC,MAAM,EAAE,OAAO;SACtB;QACD,KAAK,EAAE;YACL,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC1C,GAAG;gBACH,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;aACxB,CAAC,CACH;YACD,YAAY,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;SACvD;QACD,WAAW;QACX,OAAO,EAAE,IAAI,CAAC,KAAK,CACjB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1E;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n isHex,\n toHex,\n type Hex,\n type SignableMessage,\n bytesToHex,\n type TypedDataDefinition,\n getTypesForEIP712Domain,\n} from \"viem\";\nimport type { TypedDataDefinition as WalletServerTypedDataDefinition } from \"@alchemy/wallet-api-types\";\n\nexport const castToHex = (val: string | number | bigint | Hex): Hex => {\n if (isHex(val)) {\n return val;\n }\n return toHex(val);\n};\n\nexport const signableMessageToJsonSafe = (\n message: SignableMessage,\n): string | { raw: Hex } => {\n if (typeof message === \"string\") {\n return message;\n }\n return {\n raw:\n typeof message.raw === \"string\" ? message.raw : bytesToHex(message.raw),\n };\n};\n\n// Purposefully not using `formatTypedData` from the wallet server types pkg\n// here, since that would require typebox at runtime (which breaks RN).\nexport const typedDataToJsonSafe = ({\n domain,\n primaryType,\n message,\n types,\n}: TypedDataDefinition): WalletServerTypedDataDefinition => {\n return {\n domain: {\n ...domain,\n chainId:\n typeof domain?.chainId === \"bigint\"\n ? Number(domain.chainId)\n : domain?.chainId,\n },\n types: {\n ...Object.fromEntries(\n Object.entries(types).map(([key, value]) => [\n key,\n value ? [...value] : [],\n ]),\n ),\n EIP712Domain: [...getTypesForEIP712Domain({ domain })],\n },\n primaryType,\n message: JSON.parse(\n JSON.stringify(message, (_, v) => (typeof v === \"bigint\" ? toHex(v) : v)),\n ),\n };\n};\n"]}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/utils/format.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,KAAK,EAGL,UAAU,EAGV,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,MAAM,CAAC;AAGd,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAmC,EAAO,EAAE;IACpE,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,OAAwB,EACD,EAAE;IACzB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO;QACL,GAAG,EACD,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;KAC1E,CAAC;AACJ,CAAC,CAAC;AAEF,4EAA4E;AAC5E,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,MAAM,EACN,WAAW,EACX,OAAO,EACP,KAAK,GAGN,EAAmC,EAAE;IACpC,iBAAiB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,OAAO;QACL,MAAM,EAAE;YACN,GAAG,MAAM;YACT,OAAO,EACL,OAAO,MAAM,EAAE,OAAO,KAAK,QAAQ;gBACjC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;gBACxB,CAAC,CAAC,MAAM,EAAE,OAAO;SACtB;QACD,KAAK,EAAE;YACL,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC1C,GAAG;gBACH,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;aACvC,CAAC,CACH;YACD,YAAY,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;SACvD;QACD,WAAW;QACX,OAAO,EAAE,IAAI,CAAC,KAAK,CACjB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1E;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n isHex,\n toHex,\n type Hex,\n type SignableMessage,\n bytesToHex,\n type TypedData,\n type TypedDataDefinition,\n getTypesForEIP712Domain,\n validateTypedData,\n} from \"viem\";\nimport type { TypedDataDefinition as WalletServerTypedDataDefinition } from \"@alchemy/wallet-api-types\";\n\nexport const castToHex = (val: string | number | bigint | Hex): Hex => {\n if (isHex(val)) {\n return val;\n }\n return toHex(val);\n};\n\nexport const signableMessageToJsonSafe = (\n message: SignableMessage,\n): string | { raw: Hex } => {\n if (typeof message === \"string\") {\n return message;\n }\n return {\n raw:\n typeof message.raw === \"string\" ? message.raw : bytesToHex(message.raw),\n };\n};\n\n// Purposefully not using `formatTypedData` from the wallet server types pkg\n// here, since that would require zod at runtime (which breaks RN).\nexport const typedDataToJsonSafe = ({\n domain,\n primaryType,\n message,\n types,\n}: TypedDataDefinition<\n TypedData | Record<string, unknown>\n>): WalletServerTypedDataDefinition => {\n validateTypedData({ domain, primaryType, message, types });\n return {\n domain: {\n ...domain,\n chainId:\n typeof domain?.chainId === \"bigint\"\n ? Number(domain.chainId)\n : domain?.chainId,\n },\n types: {\n ...Object.fromEntries(\n Object.entries(types).map(([key, value]) => [\n key,\n Array.isArray(value) ? [...value] : [],\n ]),\n ),\n EIP712Domain: [...getTypesForEIP712Domain({ domain })],\n },\n primaryType,\n message: JSON.parse(\n JSON.stringify(message, (_, v) => (typeof v === \"bigint\" ? toHex(v) : v)),\n ),\n };\n};\n"]}
@@ -1,16 +1,16 @@
1
- import type { TObject, TSchema, TTuple, StaticDecode, StaticEncode } from "typebox";
1
+ import { z } from "zod";
2
2
  /** Constraint for RPC method schemas from `@alchemy/wallet-api-types/rpc`. */
3
- type RpcMethodSchema = TObject<{
4
- Request: TObject<{
5
- method: TSchema;
6
- params: TTuple<[TSchema, ...TSchema[]]>;
3
+ type RpcMethodSchema = z.ZodObject<{
4
+ Request: z.ZodObject<{
5
+ method: z.ZodType;
6
+ params: z.ZodTuple<[z.ZodType, ...z.ZodType[]]>;
7
7
  }>;
8
- ReturnType: TSchema;
8
+ ReturnType: z.ZodType;
9
9
  }>;
10
- export declare function methodSchema<TReq extends TSchema, TRes extends TSchema>(schema: TObject<{
11
- Request: TObject<{
12
- method: TSchema;
13
- params: TTuple<[TReq, ...TSchema[]]>;
10
+ export declare function methodSchema<TReq extends z.ZodType, TRes extends z.ZodType>(schema: z.ZodObject<{
11
+ Request: z.ZodObject<{
12
+ method: z.ZodType;
13
+ params: z.ZodTuple<[TReq, ...z.ZodType[]]>;
14
14
  }>;
15
15
  ReturnType: TRes;
16
16
  }>): {
@@ -18,9 +18,9 @@ export declare function methodSchema<TReq extends TSchema, TRes extends TSchema>
18
18
  response: TRes;
19
19
  };
20
20
  /** Extracts the decoded params type from a method schema. */
21
- export type MethodParams<T extends RpcMethodSchema> = StaticDecode<T["properties"]["Request"]["properties"]["params"]["items"][0]>;
21
+ export type MethodParams<T extends RpcMethodSchema> = z.output<T["shape"]["Request"]["shape"]["params"]["def"]["items"][0]>;
22
22
  /** Extracts the decoded response type from a method schema. */
23
- export type MethodResponse<T extends RpcMethodSchema> = StaticDecode<T["properties"]["ReturnType"]>;
24
- export declare function encode<const T extends TSchema>(schema: T, value: StaticDecode<T>): StaticEncode<T>;
25
- export declare function decode<const T extends TSchema>(schema: T, value: StaticEncode<T>): StaticDecode<T>;
23
+ export type MethodResponse<T extends RpcMethodSchema> = z.output<T["shape"]["ReturnType"]>;
24
+ export declare function encode<const T extends z.ZodType>(schema: T, value: z.output<T>): z.input<T>;
25
+ export declare function decode<const T extends z.ZodType>(schema: T, value: z.input<T>): z.output<T>;
26
26
  export {};
@@ -1,63 +1,59 @@
1
- import { Value, EncodeError, DecodeError, Pointer } from "typebox/value";
1
+ import { z } from "zod";
2
2
  import { BaseError } from "@alchemy/common";
3
3
  export function methodSchema(schema) {
4
4
  return {
5
- request: schema.properties.Request.properties.params.items[0],
6
- response: schema.properties.ReturnType,
5
+ request: schema.shape.Request.shape.params.def.items[0],
6
+ response: schema.shape.ReturnType,
7
7
  };
8
8
  }
9
- /**
10
- * Formats an {@link EncodeError} or {@link DecodeError} into a human-readable
11
- * string describing what went wrong, including the JSON path and the schema's
12
- * custom error message (if any).
13
- *
14
- * @param {TSchema} schema - The TypeBox schema that validation was run against.
15
- * @param {EncodeError | DecodeError} error - The error thrown by {@link Value.Encode} or {@link Value.Decode}.
16
- * @returns {string} A formatted error string prefixed with `"Invalid params"`.
17
- */
18
- function formatCodecError(schema, error) {
19
- // Use only the first error — it's the most specific. Subsequent errors are
20
- // typically cascade noise from union/anyOf branches.
21
- const causeError = error.cause.errors[0];
22
- // errors is typed as an open array — guard against the (practically
23
- // impossible) empty case.
24
- if (!causeError)
9
+ function isUnionIssue(issue) {
10
+ return issue.code === "invalid_union";
11
+ }
12
+ function formatCodecError(error) {
13
+ let issue = error.issues[0];
14
+ if (!issue)
25
15
  return "Invalid params";
26
- const path = causeError.instancePath || "(root)";
27
- // Prefer the schema's custom errorMessage annotation over the generic locale message.
28
- let message = causeError.message;
29
- const schemaPointer = causeError.schemaPath.replace(/^#/, "");
30
- if (schemaPointer) {
31
- const schemaNode = Pointer.Get(schema, schemaPointer);
32
- if (schemaNode &&
33
- typeof schemaNode === "object" &&
34
- "errorMessage" in schemaNode &&
35
- typeof schemaNode.errorMessage === "string") {
36
- message = schemaNode.errorMessage;
16
+ // For union errors, drill into the branch with the fewest issues (closest match).
17
+ // Accumulate paths as we drill each union level carries a partial path.
18
+ const pathPrefix = [];
19
+ while (isUnionIssue(issue)) {
20
+ pathPrefix.push(...issue.path);
21
+ let best;
22
+ for (const branch of issue.errors) {
23
+ if (!best || branch.length < best.length)
24
+ best = branch;
37
25
  }
26
+ const next = best?.[0];
27
+ if (!next)
28
+ break;
29
+ issue = next;
38
30
  }
39
- return `Invalid params: ${path}: ${message}`;
31
+ const fullPath = [...pathPrefix, ...issue.path];
32
+ const path = fullPath.length > 0 ? "/" + fullPath.map(String).join("/") + ": " : "";
33
+ return `Invalid params: ${path}${issue.message}`;
40
34
  }
41
- // Type-safe wrapper around `Value.Encode` with human-readable errors.
42
35
  export function encode(schema, value) {
43
36
  try {
44
- return Value.Encode(schema, value);
37
+ return schema.encode(value);
45
38
  }
46
39
  catch (error) {
47
- if (error instanceof EncodeError) {
48
- throw new BaseError(formatCodecError(schema, error), { cause: error });
40
+ if (error instanceof z.ZodError) {
41
+ throw new BaseError(formatCodecError(error), {
42
+ cause: error,
43
+ });
49
44
  }
50
45
  throw error;
51
46
  }
52
47
  }
53
- // Type-safe wrapper around `Value.Decode` with human-readable errors.
54
48
  export function decode(schema, value) {
55
49
  try {
56
- return Value.Decode(schema, value);
50
+ return schema.decode(value);
57
51
  }
58
52
  catch (error) {
59
- if (error instanceof DecodeError) {
60
- throw new BaseError(formatCodecError(schema, error), { cause: error });
53
+ if (error instanceof z.ZodError) {
54
+ throw new BaseError(formatCodecError(error), {
55
+ cause: error,
56
+ });
61
57
  }
62
58
  throw error;
63
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,MAAM,UAAU,YAAY,CAC1B,MAGE;IAEF,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;KACvC,CAAC;AACJ,CAAC;AAYD;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CACvB,MAAe,EACf,KAAgC;IAEhC,2EAA2E;IAC3E,qDAAqD;IACrD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzC,oEAAoE;IACpE,0BAA0B;IAC1B,IAAI,CAAC,UAAU;QAAE,OAAO,gBAAgB,CAAC;IAEzC,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,IAAI,QAAQ,CAAC;IAEjD,sFAAsF;IACtF,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACjC,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9D,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACtD,IACE,UAAU;YACV,OAAO,UAAU,KAAK,QAAQ;YAC9B,cAAc,IAAI,UAAU;YAC5B,OAAQ,UAAsC,CAAC,YAAY,KAAK,QAAQ,EACxE,CAAC;YACD,OAAO,GAAI,UAAsC,CAAC,YAAsB,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,OAAO,mBAAmB,IAAI,KAAK,OAAO,EAAE,CAAC;AAC/C,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,MAAM,CACpB,MAAS,EACT,KAAsB;IAEtB,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,MAAM,CACpB,MAAS,EACT,KAAsB;IAEtB,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC","sourcesContent":["import type {\n TObject,\n TSchema,\n TTuple,\n StaticDecode,\n StaticEncode,\n} from \"typebox\";\nimport { Value, EncodeError, DecodeError, Pointer } from \"typebox/value\";\nimport { BaseError } from \"@alchemy/common\";\n\n/** Constraint for RPC method schemas from `@alchemy/wallet-api-types/rpc`. */\ntype RpcMethodSchema = TObject<{\n Request: TObject<{\n method: TSchema;\n params: TTuple<[TSchema, ...TSchema[]]>;\n }>;\n ReturnType: TSchema;\n}>;\n\nexport function methodSchema<TReq extends TSchema, TRes extends TSchema>(\n schema: TObject<{\n Request: TObject<{ method: TSchema; params: TTuple<[TReq, ...TSchema[]]> }>;\n ReturnType: TRes;\n }>,\n): { request: TReq; response: TRes } {\n return {\n request: schema.properties.Request.properties.params.items[0],\n response: schema.properties.ReturnType,\n };\n}\n\n/** Extracts the decoded params type from a method schema. */\nexport type MethodParams<T extends RpcMethodSchema> = StaticDecode<\n T[\"properties\"][\"Request\"][\"properties\"][\"params\"][\"items\"][0]\n>;\n\n/** Extracts the decoded response type from a method schema. */\nexport type MethodResponse<T extends RpcMethodSchema> = StaticDecode<\n T[\"properties\"][\"ReturnType\"]\n>;\n\n/**\n * Formats an {@link EncodeError} or {@link DecodeError} into a human-readable\n * string describing what went wrong, including the JSON path and the schema's\n * custom error message (if any).\n *\n * @param {TSchema} schema - The TypeBox schema that validation was run against.\n * @param {EncodeError | DecodeError} error - The error thrown by {@link Value.Encode} or {@link Value.Decode}.\n * @returns {string} A formatted error string prefixed with `\"Invalid params\"`.\n */\nfunction formatCodecError(\n schema: TSchema,\n error: EncodeError | DecodeError,\n): string {\n // Use only the first error it's the most specific. Subsequent errors are\n // typically cascade noise from union/anyOf branches.\n const causeError = error.cause.errors[0];\n // errors is typed as an open array — guard against the (practically\n // impossible) empty case.\n if (!causeError) return \"Invalid params\";\n\n const path = causeError.instancePath || \"(root)\";\n\n // Prefer the schema's custom errorMessage annotation over the generic locale message.\n let message = causeError.message;\n const schemaPointer = causeError.schemaPath.replace(/^#/, \"\");\n if (schemaPointer) {\n const schemaNode = Pointer.Get(schema, schemaPointer);\n if (\n schemaNode &&\n typeof schemaNode === \"object\" &&\n \"errorMessage\" in schemaNode &&\n typeof (schemaNode as Record<string, unknown>).errorMessage === \"string\"\n ) {\n message = (schemaNode as Record<string, unknown>).errorMessage as string;\n }\n }\n\n return `Invalid params: ${path}: ${message}`;\n}\n\n// Type-safe wrapper around `Value.Encode` with human-readable errors.\nexport function encode<const T extends TSchema>(\n schema: T,\n value: StaticDecode<T>,\n): StaticEncode<T> {\n try {\n return Value.Encode(schema, value);\n } catch (error) {\n if (error instanceof EncodeError) {\n throw new BaseError(formatCodecError(schema, error), { cause: error });\n }\n throw error;\n }\n}\n\n// Type-safe wrapper around `Value.Decode` with human-readable errors.\nexport function decode<const T extends TSchema>(\n schema: T,\n value: StaticEncode<T>,\n): StaticDecode<T> {\n try {\n return Value.Decode(schema, value);\n } catch (error) {\n if (error instanceof DecodeError) {\n throw new BaseError(formatCodecError(schema, error), { cause: error });\n }\n throw error;\n }\n}\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,MAAM,UAAU,YAAY,CAC1B,MAME;IAEF,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;KAClC,CAAC;AACJ,CAAC;AAYD,SAAS,YAAY,CACnB,KAAuB;IAEvB,OAAO,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC;AACxC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB;IACzC,IAAI,KAAK,GAAiC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,gBAAgB,CAAC;IAEpC,kFAAkF;IAClF,0EAA0E;IAC1E,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,OAAO,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAoC,CAAC;QACzC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;gBAAE,IAAI,GAAG,MAAM,CAAC;QAC1D,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI;YAAE,MAAM;QACjB,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GACR,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,OAAO,mBAAmB,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,MAAS,EACT,KAAkB;IAElB,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;gBAC3C,KAAK,EAAE,KAAc;aACtB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,MAAS,EACT,KAAiB;IAEjB,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;gBAC3C,KAAK,EAAE,KAAc;aACtB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC","sourcesContent":["import { z } from \"zod\";\nimport { BaseError } from \"@alchemy/common\";\n\n/** Constraint for RPC method schemas from `@alchemy/wallet-api-types/rpc`. */\ntype RpcMethodSchema = z.ZodObject<{\n Request: z.ZodObject<{\n method: z.ZodType;\n params: z.ZodTuple<[z.ZodType, ...z.ZodType[]]>;\n }>;\n ReturnType: z.ZodType;\n}>;\n\nexport function methodSchema<TReq extends z.ZodType, TRes extends z.ZodType>(\n schema: z.ZodObject<{\n Request: z.ZodObject<{\n method: z.ZodType;\n params: z.ZodTuple<[TReq, ...z.ZodType[]]>;\n }>;\n ReturnType: TRes;\n }>,\n): { request: TReq; response: TRes } {\n return {\n request: schema.shape.Request.shape.params.def.items[0],\n response: schema.shape.ReturnType,\n };\n}\n\n/** Extracts the decoded params type from a method schema. */\nexport type MethodParams<T extends RpcMethodSchema> = z.output<\n T[\"shape\"][\"Request\"][\"shape\"][\"params\"][\"def\"][\"items\"][0]\n>;\n\n/** Extracts the decoded response type from a method schema. */\nexport type MethodResponse<T extends RpcMethodSchema> = z.output<\n T[\"shape\"][\"ReturnType\"]\n>;\n\nfunction isUnionIssue(\n issue: z.core.$ZodIssue,\n): issue is z.core.$ZodIssueInvalidUnion {\n return issue.code === \"invalid_union\";\n}\n\nfunction formatCodecError(error: z.ZodError): string {\n let issue: z.core.$ZodIssue | undefined = error.issues[0];\n if (!issue) return \"Invalid params\";\n\n // For union errors, drill into the branch with the fewest issues (closest match).\n // Accumulate paths as we drill each union level carries a partial path.\n const pathPrefix: PropertyKey[] = [];\n while (isUnionIssue(issue)) {\n pathPrefix.push(...issue.path);\n let best: z.core.$ZodIssue[] | undefined;\n for (const branch of issue.errors) {\n if (!best || branch.length < best.length) best = branch;\n }\n const next = best?.[0];\n if (!next) break;\n issue = next;\n }\n\n const fullPath = [...pathPrefix, ...issue.path];\n const path =\n fullPath.length > 0 ? \"/\" + fullPath.map(String).join(\"/\") + \": \" : \"\";\n\n return `Invalid params: ${path}${issue.message}`;\n}\n\nexport function encode<const T extends z.ZodType>(\n schema: T,\n value: z.output<T>,\n): z.input<T> {\n try {\n return schema.encode(value);\n } catch (error) {\n if (error instanceof z.ZodError) {\n throw new BaseError(formatCodecError(error), {\n cause: error as Error,\n });\n }\n throw error;\n }\n}\n\nexport function decode<const T extends z.ZodType>(\n schema: T,\n value: z.input<T>,\n): z.output<T> {\n try {\n return schema.decode(value);\n } catch (error) {\n if (error instanceof z.ZodError) {\n throw new BaseError(formatCodecError(error), {\n cause: error as Error,\n });\n }\n throw error;\n }\n}\n"]}
@@ -1 +1 @@
1
- export declare const VERSION = "5.0.0-beta.2";
1
+ export declare const VERSION = "5.0.0-beta.30";
@@ -1,4 +1,4 @@
1
1
  // This file is autogenerated by inject-version.ts. Any changes will be
2
2
  // overwritten on commit!
3
- export const VERSION = "5.0.0-beta.2";
3
+ export const VERSION = "5.0.0-beta.30";
4
4
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yBAAyB;AACzB,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC","sourcesContent":["// This file is autogenerated by inject-version.ts. Any changes will be\n// overwritten on commit!\nexport const VERSION = \"5.0.0-beta.2\";\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yBAAyB;AACzB,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC","sourcesContent":["// This file is autogenerated by inject-version.ts. Any changes will be\n// overwritten on commit!\nexport const VERSION = \"5.0.0-beta.30\";\n"]}
@@ -2,10 +2,15 @@ import type { Address, Prettify } from "viem";
2
2
  import type { DistributiveOmit, InnerWalletApiClient } from "../types.ts";
3
3
  import { type PrepareCallsCapabilities, type WithCapabilities } from "../utils/capabilities.js";
4
4
  import { type AccountParam } from "../utils/resolve.js";
5
+ import { PrepareCallsParams as EvmPrepareCallsSchema } from "@alchemy/wallet-api-types";
6
+ import type { z } from "zod";
5
7
  import { wallet_prepareCalls as MethodSchema } from "@alchemy/wallet-api-types/rpc";
6
- import { type MethodParams, type MethodResponse } from "../utils/schema.js";
7
- type BasePrepareCallsParams = MethodParams<typeof MethodSchema>;
8
- type PrepareCallsResponse = MethodResponse<typeof MethodSchema>;
8
+ import { type MethodResponse } from "../utils/schema.js";
9
+ type BasePrepareCallsParams = z.output<typeof EvmPrepareCallsSchema>;
10
+ type FullPrepareCallsResponse = MethodResponse<typeof MethodSchema>;
11
+ type PrepareCallsResponse = Exclude<FullPrepareCallsResponse, {
12
+ type: "solana-transaction-v0";
13
+ }>;
9
14
  export type PrepareCallsParams = Prettify<WithCapabilities<DistributiveOmit<BasePrepareCallsParams, "from" | "chainId"> & {
10
15
  account?: AccountParam;
11
16
  chainId?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"prepareCalls.d.ts","sourceRoot":"","sources":["../../../src/actions/prepareCalls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAIL,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,mBAAmB,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAG5B,KAAK,sBAAsB,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AAChE,KAAK,oBAAoB,GAAG,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,gBAAgB,CACd,gBAAgB,CAAC,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG;IAC7D,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CACF,CACF,CAAC;AAEF,2FAA2F;AAC3F,KAAK,qBAAqB,GAAG,QAAQ,CACnC,IAAI,CAAC,sBAAsB,EAAE,MAAM,GAAG,cAAc,CAAC,GAAG;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,wBAAwB,CAAC;CACzC,CACF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,OAAO,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC,GAC3D,CAAC,IAAI,CACH,OAAO,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC,EAC3D,iBAAiB,CAClB,GAAG;IACF,eAAe,EAAE,qBAAqB,CAAC;CACxC,CAAC,CAAC;AAEP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CA+C7B"}
1
+ {"version":3,"file":"prepareCalls.d.ts","sourceRoot":"","sources":["../../../src/actions/prepareCalls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAG1E,OAAO,EAIL,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,kBAAkB,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,mBAAmB,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAG5B,KAAK,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACrE,KAAK,wBAAwB,GAAG,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC;AACpE,KAAK,oBAAoB,GAAG,OAAO,CACjC,wBAAwB,EACxB;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,CAClC,CAAC;AAQF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,gBAAgB,CACd,gBAAgB,CAAC,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG;IAC7D,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CACF,CACF,CAAC;AAEF,2FAA2F;AAC3F,KAAK,qBAAqB,GAAG,QAAQ,CACnC,IAAI,CAAC,sBAAsB,EAAE,MAAM,GAAG,cAAc,CAAC,GAAG;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,wBAAwB,CAAC;CACzC,CACF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,OAAO,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC,GAC3D,CAAC,IAAI,CACH,OAAO,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC,EAC3D,iBAAiB,CAClB,GAAG;IACF,eAAe,EAAE,qBAAqB,CAAC;CACxC,CAAC,CAAC;AAEP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAqD7B"}
@@ -1,12 +1,13 @@
1
1
  import type { Address } from "abitype";
2
2
  import { type JsonRpcAccount, type Prettify } from "viem";
3
3
  import { wallet_requestAccount as MethodSchema } from "@alchemy/wallet-api-types/rpc";
4
- import type { DistributiveOmit, InnerWalletApiClient } from "../types";
4
+ import type { InnerWalletApiClient } from "../types";
5
5
  import { type MethodParams } from "../utils/schema.js";
6
6
  type BaseRequestAccountParams = MethodParams<typeof MethodSchema>;
7
- export type RequestAccountParams = Prettify<DistributiveOmit<Extract<BaseRequestAccountParams, {
7
+ type SignerAddressParams = Extract<BaseRequestAccountParams, {
8
8
  signerAddress: Address;
9
- }>, "signerAddress" | "includeCounterfactualInfo"> & ({
9
+ }>;
10
+ export type RequestAccountParams = Prettify<Pick<SignerAddressParams, "id" | "creationHint"> & ({
10
11
  signerAddress?: Address;
11
12
  accountAddress?: never;
12
13
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"requestAccount.d.ts","sourceRoot":"","sources":["../../../src/actions/requestAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAkB,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC1E,OAAO,EAAE,qBAAqB,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGvE,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAG5B,KAAK,wBAAwB,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AAElE,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CACzC,gBAAgB,CACd,OAAO,CAAC,wBAAwB,EAAE;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,CAAC,EAC7D,eAAe,GAAG,2BAA2B,CAC9C,GACC,CACI;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,KAAK,CAAA;CAAE,GACnD;IAAE,aAAa,CAAC,EAAE,KAAK,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CACrD,CACJ,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CA6D/B"}
1
+ {"version":3,"file":"requestAccount.d.ts","sourceRoot":"","sources":["../../../src/actions/requestAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAkB,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC1E,OAAO,EAAE,qBAAqB,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGrD,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAG5B,KAAK,wBAAwB,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AAElE,KAAK,mBAAmB,GAAG,OAAO,CAChC,wBAAwB,EACxB;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,CAC3B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CACzC,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,cAAc,CAAC,GAC9C,CACI;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,KAAK,CAAA;CAAE,GACnD;IAAE,aAAa,CAAC,EAAE,KAAK,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CACrD,CACJ,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CA6D/B"}
@@ -33,8 +33,11 @@ export type SendCallsResult = Prettify<SendPreparedCallsResult>;
33
33
  * }
34
34
  * });
35
35
  *
36
- * // The result contains the call ID
37
- * console.log(result.id);
36
+ * // Wait for the calls to be mined and confirmed.
37
+ * // Polls getCallsStatus until the bundle succeeds, fails, or times out (default 60s).
38
+ * // See: https://viem.sh/docs/actions/wallet/waitForCallsStatus
39
+ * const status = await client.waitForCallsStatus({ id: result.id });
40
+ * console.log(status.status); // "success" | "failure"
38
41
  * ```
39
42
  * <Note>
40
43
  * If using this action with an ERC-20 paymaster in pre-operation mode with `autoPermit`, the contents of the permit will be hidden
@@ -1 +1 @@
1
- {"version":3,"file":"sendCalls.d.ts","sourceRoot":"","sources":["../../../src/actions/sendCalls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAKhC,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,gBAAgB,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;IAChD,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;CAC3B,CACF,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,eAAe,CAAC,CA2C1B"}
1
+ {"version":3,"file":"sendCalls.d.ts","sourceRoot":"","sources":["../../../src/actions/sendCalls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAKhC,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,gBAAgB,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;IAChD,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;CAC3B,CACF,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,eAAe,CAAC,CA2C1B"}
@@ -3,7 +3,9 @@ import type { DistributiveOmit, InnerWalletApiClient } from "../types.ts";
3
3
  import { type WithCapabilities } from "../utils/capabilities.js";
4
4
  import { wallet_sendPreparedCalls as MethodSchema } from "@alchemy/wallet-api-types/rpc";
5
5
  import { type MethodParams, type MethodResponse } from "../utils/schema.js";
6
- type BaseSendPreparedCallsParams = MethodParams<typeof MethodSchema>;
6
+ type BaseSendPreparedCallsParams = Exclude<MethodParams<typeof MethodSchema>, {
7
+ type: "solana-transaction-v0";
8
+ }>;
7
9
  type SendPreparedCallsResponse = MethodResponse<typeof MethodSchema>;
8
10
  export type SendPreparedCallsParams = Prettify<WithCapabilities<DistributiveOmit<BaseSendPreparedCallsParams, "chainId"> & {
9
11
  chainId?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"sendPreparedCalls.d.ts","sourceRoot":"","sources":["../../../src/actions/sendPreparedCalls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAG5B,KAAK,2BAA2B,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AACrE,KAAK,yBAAyB,GAAG,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC;AAErE,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAC5C,gBAAgB,CACd,gBAAgB,CAAC,2BAA2B,EAAE,SAAS,CAAC,GAAG;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CACF,CACF,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CA0BlC"}
1
+ {"version":3,"file":"sendPreparedCalls.d.ts","sourceRoot":"","sources":["../../../src/actions/sendPreparedCalls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAG5B,KAAK,2BAA2B,GAAG,OAAO,CACxC,YAAY,CAAC,OAAO,YAAY,CAAC,EACjC;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,CAClC,CAAC;AACF,KAAK,yBAAyB,GAAG,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC;AAErE,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAC5C,gBAAgB,CACd,gBAAgB,CAAC,2BAA2B,EAAE,SAAS,CAAC,GAAG;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CACF,CACF,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CA0BlC"}
@@ -18,6 +18,8 @@ export type SignPreparedCallsResult = {
18
18
  type: "user-operation-v060";
19
19
  }>> | Signed<Extract<PrepareCallsResult, {
20
20
  type: "user-operation-v070";
21
+ }>> | Signed<Extract<PrepareCallsResult, {
22
+ type: "authorization";
21
23
  }>>;
22
24
  /**
23
25
  * Signs prepared calls using the provided signer.
@@ -1 +1 @@
1
- {"version":3,"file":"signPreparedCalls.d.ts","sourceRoot":"","sources":["../../../src/actions/signPreparedCalls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGxD,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAEnE,mGAAmG;AACnG,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACrD,QAAQ,CACN,IAAI,CAAC,CAAC,EAAE,kBAAkB,GAAG,YAAY,CAAC,GAAG;IAC3C,SAAS,EAAE,0BAA0B,CAAC;CACvC,CACF,GACD,KAAK,CAAC;AAEV,MAAM,MAAM,uBAAuB,GAC/B;IACE,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CACV,OAAO,CAAC,kBAAkB,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAC/D,EAAE,CAAC;CACL,GACD,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAAC,GACpE,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAAC,CAAC;AAUzE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CA0ElC"}
1
+ {"version":3,"file":"signPreparedCalls.d.ts","sourceRoot":"","sources":["../../../src/actions/signPreparedCalls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGxD,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAEnE,mGAAmG;AACnG,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACrD,QAAQ,CACN,IAAI,CAAC,CAAC,EAAE,kBAAkB,GAAG,YAAY,CAAC,GAAG;IAC3C,SAAS,EAAE,0BAA0B,CAAC;CACvC,CACF,GACD,KAAK,CAAC;AAEV,MAAM,MAAM,uBAAuB,GAC/B;IACE,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CACV,OAAO,CAAC,kBAAkB,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAC/D,EAAE,CAAC;CACL,GACD,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAAC,GACpE,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAAC,GACpE,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,CAAC,CAAC;AAUnE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CAsFlC"}
@@ -1,9 +1,9 @@
1
1
  import { type Hex, type Prettify } from "viem";
2
- import { type PersonalSignSignatureRequest, type TypedDataSignatureRequest, type AuthorizationSignatureRequest, Eip7702UnsignedAuth } from "@alchemy/wallet-api-types";
2
+ import { PersonalSignSignatureRequest, TypedDataSignatureRequest, AuthorizationSignatureRequest, Eip7702UnsignedAuth } from "@alchemy/wallet-api-types";
3
3
  import type { InnerWalletApiClient, WithoutRawPayload } from "../types";
4
- import type { StaticDecode } from "typebox";
5
- export type SignSignatureRequestParams = Prettify<WithoutRawPayload<PersonalSignSignatureRequest | TypedDataSignatureRequest | (AuthorizationSignatureRequest & {
6
- data: StaticDecode<typeof Eip7702UnsignedAuth>;
4
+ import type { z } from "zod";
5
+ export type SignSignatureRequestParams = Prettify<WithoutRawPayload<z.output<typeof PersonalSignSignatureRequest> | z.output<typeof TypedDataSignatureRequest> | (z.output<typeof AuthorizationSignatureRequest> & {
6
+ data: z.output<typeof Eip7702UnsignedAuth>;
7
7
  })>>;
8
8
  export type SignSignatureRequestResult = {
9
9
  type: "secp256k1";
@@ -1 +1 @@
1
- {"version":3,"file":"signSignatureRequest.d.ts","sourceRoot":"","sources":["../../../src/actions/signSignatureRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAsB,MAAM,MAAM,CAAC;AACnE,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EACV,oBAAoB,EAEpB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAOlB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAC/C,iBAAiB,CACb,4BAA4B,GAC5B,yBAAyB,GACzB,CAAC,6BAA6B,GAAG;IAC/B,IAAI,EAAE,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC;CAChD,CAAC,CACL,CACF,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;CACX,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,0BAA0B,CAAC,CAQrC"}
1
+ {"version":3,"file":"signSignatureRequest.d.ts","sourceRoot":"","sources":["../../../src/actions/signSignatureRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAsB,MAAM,MAAM,CAAC;AACnE,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EACV,oBAAoB,EAEpB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAOlB,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAC/C,iBAAiB,CACb,CAAC,CAAC,MAAM,CAAC,OAAO,4BAA4B,CAAC,GAC7C,CAAC,CAAC,MAAM,CAAC,OAAO,yBAAyB,CAAC,GAC1C,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,6BAA6B,CAAC,GAAG;IAChD,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;CAC5C,CAAC,CACL,CACF,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;CACX,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,0BAA0B,CAAC,CAQrC"}
@@ -1,10 +1,20 @@
1
- import { type Hex, type Prettify, type TypedDataDefinition } from "viem";
1
+ import { type Address as ViemAddress, type Hex, type TypedData } from "viem";
2
2
  import type { InnerWalletApiClient } from "../types.ts";
3
3
  import { type AccountParam } from "../utils/resolve.js";
4
- export type SignTypedDataParams = Prettify<TypedDataDefinition & {
4
+ export type SignTypedDataParams = {
5
+ domain?: {
6
+ name?: string;
7
+ version?: string;
8
+ chainId?: number | bigint;
9
+ verifyingContract?: ViemAddress;
10
+ salt?: Hex;
11
+ };
12
+ types: TypedData | Record<string, unknown>;
13
+ primaryType: string;
14
+ message: Record<string, unknown>;
5
15
  account?: AccountParam;
6
- }>;
7
- export type SignTypedDataResult = Prettify<Hex>;
16
+ };
17
+ export type SignTypedDataResult = Hex;
8
18
  /**
9
19
  * Signs typed data (EIP-712) using the smart account.
10
20
  * This method requests the account associated with the signer and uses it to sign the typed data.
@@ -1 +1 @@
1
- {"version":3,"file":"signTypedData.d.ts","sourceRoot":"","sources":["../../../src/actions/signTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAE,MAAM,MAAM,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAMxD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CACxC,mBAAmB,GAAG;IACpB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB,CACF,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,wBAAsB,aAAa,CACjC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CA4B9B"}
1
+ {"version":3,"file":"signTypedData.d.ts","sourceRoot":"","sources":["../../../src/actions/signTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,IAAI,WAAW,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,MAAM,CAAC;AAC7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAMxD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC1B,iBAAiB,CAAC,EAAE,WAAW,CAAC;QAChC,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC;IACF,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,wBAAsB,aAAa,CACjC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CA4B9B"}
@@ -0,0 +1,25 @@
1
+ import type { Hex } from "viem";
2
+ import type { InnerSolanaWalletApiClient } from "../../types.js";
3
+ import { wallet_getCallsStatus as MethodSchema } from "@alchemy/wallet-api-types/rpc";
4
+ import { type MethodResponse } from "../../utils/schema.js";
5
+ type GetCallsStatusResponse = MethodResponse<typeof MethodSchema>;
6
+ type SolanaGetCallsStatusResponse = Extract<GetCallsStatusResponse, {
7
+ chainId: `solana:${string}`;
8
+ }>;
9
+ export type SolanaGetCallsStatusParams = {
10
+ id: Hex;
11
+ };
12
+ export type SolanaGetCallsStatusResult = Omit<SolanaGetCallsStatusResponse, "status"> & {
13
+ status: "pending" | "success" | "failure";
14
+ statusCode: number;
15
+ };
16
+ /**
17
+ * Gets the status of a Solana call bundle.
18
+ *
19
+ * @param {InnerSolanaWalletApiClient} client - The Solana wallet API client
20
+ * @param {SolanaGetCallsStatusParams} params - The call ID to check
21
+ * @returns {Promise<SolanaGetCallsStatusResult>} The status of the call
22
+ */
23
+ export declare function getCallsStatus(client: InnerSolanaWalletApiClient, params: SolanaGetCallsStatusParams): Promise<SolanaGetCallsStatusResult>;
24
+ export {};
25
+ //# sourceMappingURL=getCallsStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCallsStatus.d.ts","sourceRoot":"","sources":["../../../../src/actions/solana/getCallsStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,qBAAqB,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAG/B,KAAK,sBAAsB,GAAG,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC;AAElE,KAAK,4BAA4B,GAAG,OAAO,CACzC,sBAAsB,EACtB;IAAE,OAAO,EAAE,UAAU,MAAM,EAAE,CAAA;CAAE,CAChC,CAAC;AAWF,MAAM,MAAM,0BAA0B,GAAG;IACvC,EAAE,EAAE,GAAG,CAAC;CACT,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,4BAA4B,EAC5B,QAAQ,CACT,GAAG;IACF,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,0BAA0B,EAClC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,0BAA0B,CAAC,CA4BrC"}
@@ -0,0 +1,47 @@
1
+ import type { Prettify } from "viem";
2
+ import type { DistributiveOmit, InnerSolanaWalletApiClient } from "../../types.js";
3
+ import type { SolanaChainId } from "@alchemy/wallet-api-types";
4
+ import { SolanaPrepareCallsParams as SolanaPrepareCallsSchema } from "@alchemy/wallet-api-types";
5
+ import { wallet_prepareCalls as MethodSchema } from "@alchemy/wallet-api-types/rpc";
6
+ import type { z } from "zod";
7
+ import { type WithCapabilities } from "../../utils/capabilities.js";
8
+ import { type MethodResponse } from "../../utils/schema.js";
9
+ type PrepareCallsResponse = MethodResponse<typeof MethodSchema>;
10
+ type BaseSolanaPrepareCallsParams = z.output<typeof SolanaPrepareCallsSchema>;
11
+ export type SolanaPrepareCallsParams = Prettify<WithCapabilities<DistributiveOmit<BaseSolanaPrepareCallsParams, "from" | "chainId"> & {
12
+ account?: string;
13
+ chainId?: SolanaChainId;
14
+ }>>;
15
+ type SolanaPrepareCallsResponse = Extract<PrepareCallsResponse, {
16
+ type: "solana-transaction-v0";
17
+ }>;
18
+ export type SolanaPrepareCallsResult = SolanaPrepareCallsResponse;
19
+ /**
20
+ * Prepares Solana instructions for execution by building a versioned transaction.
21
+ * Returns the compiled transaction and a signature request that needs to be signed
22
+ * before submitting to sendPreparedCalls.
23
+ *
24
+ * @param {InnerSolanaWalletApiClient} client - The Solana wallet API client
25
+ * @param {SolanaPrepareCallsParams} params - Parameters for preparing Solana calls
26
+ * @param {Array<{programId: string, accounts?: Array, data: Hex}>} params.calls - Array of Solana instructions
27
+ * @param {string} [params.account] - The Solana address to execute from. Defaults to the signer's address.
28
+ * @param {SolanaChainId} [params.chainId] - The Solana chain ID. Defaults to the client's chain.
29
+ * @param {object} [params.capabilities] - Optional capabilities (e.g. paymaster sponsorship)
30
+ * @returns {Promise<SolanaPrepareCallsResult>} The prepared Solana transaction with signature request
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * const result = await client.prepareCalls({
35
+ * calls: [{
36
+ * programId: "11111111111111111111111111111111",
37
+ * data: "0x...",
38
+ * }],
39
+ * capabilities: {
40
+ * paymaster: { policyId: "your-policy-id" }
41
+ * }
42
+ * });
43
+ * ```
44
+ */
45
+ export declare function prepareCalls(client: InnerSolanaWalletApiClient, params: SolanaPrepareCallsParams): Promise<SolanaPrepareCallsResult>;
46
+ export {};
47
+ //# sourceMappingURL=prepareCalls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareCalls.d.ts","sourceRoot":"","sources":["../../../../src/actions/solana/prepareCalls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EACV,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,IAAI,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,mBAAmB,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAG/B,KAAK,oBAAoB,GAAG,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC;AAEhE,KAAK,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE9E,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC7C,gBAAgB,CACd,gBAAgB,CAAC,4BAA4B,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CACF,CACF,CAAC;AAEF,KAAK,0BAA0B,GAAG,OAAO,CACvC,oBAAoB,EACpB;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,CAClC,CAAC;AAQF,MAAM,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,0BAA0B,EAClC,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,wBAAwB,CAAC,CAwCnC"}
@@ -0,0 +1,35 @@
1
+ import type { Prettify } from "viem";
2
+ import type { DistributiveOmit, InnerSolanaWalletApiClient } from "../../types.js";
3
+ import type { SolanaChainId } from "@alchemy/wallet-api-types";
4
+ import { type SolanaPrepareCallsParams } from "./prepareCalls.js";
5
+ import { type SolanaSendPreparedCallsResult } from "./sendPreparedCalls.js";
6
+ export type SolanaSendCallsParams = Prettify<DistributiveOmit<SolanaPrepareCallsParams, "chainId"> & {
7
+ chainId?: SolanaChainId;
8
+ }>;
9
+ export type SolanaSendCallsResult = Prettify<SolanaSendPreparedCallsResult>;
10
+ /**
11
+ * Prepares, signs, and submits Solana instructions in a single call.
12
+ * Internally calls `prepareCalls`, `signPreparedCalls`, and `sendPreparedCalls`.
13
+ *
14
+ * @param {InnerSolanaWalletApiClient} client - The Solana wallet API client
15
+ * @param {SolanaSendCallsParams} params - Parameters for sending Solana calls
16
+ * @param {Array<{programId: string, accounts?: Array, data: Hex}>} params.calls - Array of Solana instructions
17
+ * @param {string} [params.account] - The Solana address to execute from. Defaults to the signer's address.
18
+ * @param {object} [params.capabilities] - Optional capabilities (e.g. paymaster sponsorship)
19
+ * @returns {Promise<SolanaSendCallsResult>} The result containing the call ID
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * const result = await client.sendCalls({
24
+ * calls: [{
25
+ * programId: "11111111111111111111111111111111",
26
+ * data: "0x...",
27
+ * }],
28
+ * capabilities: {
29
+ * paymaster: { policyId: "your-policy-id" }
30
+ * }
31
+ * });
32
+ * ```
33
+ */
34
+ export declare function sendCalls(client: InnerSolanaWalletApiClient, params: SolanaSendCallsParams): Promise<SolanaSendCallsResult>;
35
+ //# sourceMappingURL=sendCalls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendCalls.d.ts","sourceRoot":"","sources":["../../../../src/actions/solana/sendCalls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EACV,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAgB,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,wBAAwB,CAAC;AAGhC,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAC1C,gBAAgB,CAAC,wBAAwB,EAAE,SAAS,CAAC,GAAG;IACtD,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CACF,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,6BAA6B,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,0BAA0B,EAClC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAgBhC"}