@permissionless/wagmi 0.0.4 → 0.1.1

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 (80) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +102 -0
  3. package/_cjs/context.js +14 -0
  4. package/_cjs/context.js.map +1 -0
  5. package/_cjs/hooks/useAvailableCapabilities.js +37 -0
  6. package/_cjs/hooks/useAvailableCapabilities.js.map +1 -0
  7. package/_cjs/hooks/useSendTransaction.js +42 -0
  8. package/_cjs/hooks/useSendTransaction.js.map +1 -0
  9. package/_cjs/hooks/useWaitForTransactionReceipt.js +167 -0
  10. package/_cjs/hooks/useWaitForTransactionReceipt.js.map +1 -0
  11. package/_cjs/index.js +7 -11
  12. package/_cjs/index.js.map +1 -1
  13. package/_cjs/utils/observe.js +43 -0
  14. package/_cjs/utils/observe.js.map +1 -0
  15. package/_esm/context.js +10 -0
  16. package/_esm/context.js.map +1 -0
  17. package/_esm/hooks/useAvailableCapabilities.js +33 -0
  18. package/_esm/hooks/useAvailableCapabilities.js.map +1 -0
  19. package/_esm/hooks/useSendTransaction.js +38 -0
  20. package/_esm/hooks/useSendTransaction.js.map +1 -0
  21. package/_esm/hooks/useWaitForTransactionReceipt.js +175 -0
  22. package/_esm/hooks/useWaitForTransactionReceipt.js.map +1 -0
  23. package/_esm/index.js +3 -6
  24. package/_esm/index.js.map +1 -1
  25. package/_esm/utils/observe.js +46 -0
  26. package/_esm/utils/observe.js.map +1 -0
  27. package/_types/context.d.ts +11 -0
  28. package/_types/context.d.ts.map +1 -0
  29. package/_types/hooks/useAvailableCapabilities.d.ts +5 -0
  30. package/_types/hooks/useAvailableCapabilities.d.ts.map +1 -0
  31. package/_types/hooks/useSendTransaction.d.ts +20 -0
  32. package/_types/hooks/useSendTransaction.d.ts.map +1 -0
  33. package/_types/hooks/useWaitForTransactionReceipt.d.ts +83 -0
  34. package/_types/hooks/useWaitForTransactionReceipt.d.ts.map +1 -0
  35. package/_types/index.d.ts +3 -6
  36. package/_types/index.d.ts.map +1 -1
  37. package/_types/utils/observe.d.ts +23 -0
  38. package/_types/utils/observe.d.ts.map +1 -0
  39. package/context.ts +22 -0
  40. package/hooks/useAvailableCapabilities.ts +43 -0
  41. package/hooks/useSendTransaction.ts +148 -0
  42. package/hooks/useWaitForTransactionReceipt.ts +431 -0
  43. package/index.ts +13 -30
  44. package/package.json +2 -4
  45. package/utils/observe.ts +76 -0
  46. package/_cjs/connectors/biconomySmartAccount.js +0 -18
  47. package/_cjs/connectors/biconomySmartAccount.js.map +0 -1
  48. package/_cjs/connectors/kernelSmartAccount.js +0 -18
  49. package/_cjs/connectors/kernelSmartAccount.js.map +0 -1
  50. package/_cjs/connectors/safeSmartAccount.js +0 -18
  51. package/_cjs/connectors/safeSmartAccount.js.map +0 -1
  52. package/_cjs/connectors/simpleSmartAccount.js +0 -30
  53. package/_cjs/connectors/simpleSmartAccount.js.map +0 -1
  54. package/_cjs/connectors/smartAccount.js +0 -51
  55. package/_cjs/connectors/smartAccount.js.map +0 -1
  56. package/_esm/connectors/biconomySmartAccount.js +0 -14
  57. package/_esm/connectors/biconomySmartAccount.js.map +0 -1
  58. package/_esm/connectors/kernelSmartAccount.js +0 -14
  59. package/_esm/connectors/kernelSmartAccount.js.map +0 -1
  60. package/_esm/connectors/safeSmartAccount.js +0 -14
  61. package/_esm/connectors/safeSmartAccount.js.map +0 -1
  62. package/_esm/connectors/simpleSmartAccount.js +0 -26
  63. package/_esm/connectors/simpleSmartAccount.js.map +0 -1
  64. package/_esm/connectors/smartAccount.js +0 -53
  65. package/_esm/connectors/smartAccount.js.map +0 -1
  66. package/_types/connectors/biconomySmartAccount.d.ts +0 -317
  67. package/_types/connectors/biconomySmartAccount.d.ts.map +0 -1
  68. package/_types/connectors/kernelSmartAccount.d.ts +0 -317
  69. package/_types/connectors/kernelSmartAccount.d.ts.map +0 -1
  70. package/_types/connectors/safeSmartAccount.d.ts +0 -317
  71. package/_types/connectors/safeSmartAccount.d.ts.map +0 -1
  72. package/_types/connectors/simpleSmartAccount.d.ts +0 -635
  73. package/_types/connectors/simpleSmartAccount.d.ts.map +0 -1
  74. package/_types/connectors/smartAccount.d.ts +0 -294
  75. package/_types/connectors/smartAccount.d.ts.map +0 -1
  76. package/connectors/biconomySmartAccount.ts +0 -53
  77. package/connectors/kernelSmartAccount.ts +0 -53
  78. package/connectors/safeSmartAccount.ts +0 -50
  79. package/connectors/simpleSmartAccount.ts +0 -90
  80. package/connectors/smartAccount.ts +0 -72
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @permissionless/wagmi
2
2
 
3
+ ## 0.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - a5593ef8ee73001434ff717b39fe1298cba196d3: Added exports for parameters and return types
8
+
9
+ ## 0.1.0
10
+
11
+ ### Minor Changes
12
+
13
+ - c3f6a95fc4d4264a0d761931da74d9c46a052468: Added hooks for Erc5792
14
+
3
15
  ## 0.0.4
4
16
 
5
17
  ### Patch Changes
package/README.md ADDED
@@ -0,0 +1,102 @@
1
+ ---
2
+ showOutline: false
3
+ content:
4
+ width: 100%
5
+ description: Build with ERC-4337 smart accounts, bundlers, paymasters, and user operations
6
+ title: permissionless.js
7
+ ---
8
+
9
+ <h1 className='vocs_HomePage_title'>@permissionless/wagmi</h1>
10
+ Enable gas sponsorship and transaction batching for your app with just a couple lines of cod.
11
+ <br />
12
+ <br />
13
+ permissionless/wagmi is a TypeScript library built on top of permissionless.js
14
+ and wagmi for quickly enabling support for EIP-5792 features on your app,
15
+ including gas sponsorship and transaction batching, with just a couple lines of
16
+ code. We built @permissionless/wagmi to allow app developers to support the
17
+ features of new smart accounts such as Coinbase Smart Wallet without any of the
18
+ complexity.
19
+
20
+ <article className="vocs_Content max-w-4xl mt-[-80px] mx-auto">
21
+
22
+ #
23
+
24
+ # Overview
25
+
26
+ ```tsx [main.tsx]
27
+ import { PermissionlessProvider } from "@permissionless/wagmi"; // [!code ++] // [!code focus]
28
+
29
+ function Main() {
30
+ return (
31
+ <WagmiProvider config={config}>
32
+ <QueryClientProvider client={queryClient}>
33
+ <PermissionlessProvider // [!code ++] // [!code focus]
34
+ capabilities={capabilities} // [!code ++] // [!code focus]
35
+ >
36
+ // [!code ++] // [!code focus]
37
+ {/** ... */}
38
+ </PermissionlessProvider>{" "}
39
+ // [!code ++] // [!code focus]
40
+ </QueryClientProvider>
41
+ </WagmiProvider>
42
+ );
43
+ }
44
+ ```
45
+
46
+ ```tsx [app.tsx]
47
+ import { useSendTransaction, useWaitForTransactionReceipt } from "wagmi" // [!code --] // [!code focus]
48
+ import { // [!code ++] // [!code focus]
49
+ useSendTransaction, // [!code ++] // [!code focus]
50
+ useWaitForTransactionReceipt // [!code ++] // [!code focus]
51
+ } from "@permissionless/wagmi" // [!code ++] // [!code focus]
52
+
53
+ function App() {
54
+ const {
55
+ sendTransaction, // [!code focus]
56
+ data: transactionReference,
57
+ isPending
58
+ } = useSendTransaction() // [!code focus]
59
+
60
+ const { data: receipt, isPending: isReceiptPending } = // [!code focus]
61
+ useWaitForTransactionReceipt({ // [!code focus]
62
+ hash: "0x1234" // [!code --] // [!code focus]
63
+ id: transactionReference // [!code ++] // [!code focus]
64
+ }) // [!code focus]
65
+
66
+ const sendTransactionCallback = useCallback(async () => {
67
+ console.log("Sending transaction...")
68
+ sendTransaction({ // [!code focus]
69
+ to: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045", // [!code focus]
70
+ data: "0x1234" // [!code focus]
71
+ }) // [!code focus]
72
+ }, [sendTransaction])
73
+
74
+ }
75
+ ```
76
+
77
+ And that's it!
78
+
79
+ # Features
80
+
81
+ - **ERC-7677 Paymaster service**: Makes it easier to interact with an external
82
+ smart account that offers support.
83
+ - **Sending multiple transactions**: Makes it easier to send multiple
84
+ transactions from an external smart account.
85
+ - **Built on & for wagmi**: `@permissionless/wagmi` is designed to be a thin
86
+ wrapper around wagmi, maintaining the same style and overall feel wagmi
87
+ provides.
88
+ - and a lot more coming soon...
89
+
90
+ # Source Code
91
+
92
+ The source code for `@permissionless/wagmi` is available on
93
+ [GitHub](https://github.com/pimlicolabs/permissionless.js)
94
+
95
+ `@permissionless/wagmi` is distributed under an MIT License.
96
+
97
+ We welcome contributions from the community. If you would like to contribute,
98
+ please open an issue or a pull request.
99
+
100
+ Feel free to ask any questions in our [Telegram group](https://t.me/pimlicoHQ)
101
+
102
+ </article>
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PermissionlessProvider = exports.PermissionlessContext = void 0;
4
+ const react_1 = require("react");
5
+ exports.PermissionlessContext = (0, react_1.createContext)({
6
+ capabilities: {}
7
+ });
8
+ const PermissionlessProvider = (parameters) => {
9
+ const { capabilities, children } = parameters;
10
+ const props = { value: { capabilities } };
11
+ return (0, react_1.createElement)(exports.PermissionlessContext.Provider, props, children);
12
+ };
13
+ exports.PermissionlessProvider = PermissionlessProvider;
14
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../context.ts"],"names":[],"mappings":";;;AAAA,iCAAoD;AAGvC,QAAA,qBAAqB,GAAG,IAAA,qBAAa,EAE/C;IACC,YAAY,EAAE,EAAE;CACnB,CAAC,CAAA;AAMK,MAAM,sBAAsB,GAAG,CAClC,UAAgE,EAClE,EAAE;IACA,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAA;IAE7C,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,CAAA;IAEzC,OAAO,IAAA,qBAAa,EAAC,6BAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;AACzE,CAAC,CAAA;AARY,QAAA,sBAAsB,0BAQlC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.useAvailableCapabilities = void 0;
5
+ const react_1 = require("react");
6
+ const wagmi_1 = require("wagmi");
7
+ const experimental_1 = require("wagmi/experimental");
8
+ const context_1 = require("../context.js");
9
+ const useAvailableCapabilities = () => {
10
+ const { capabilities: capabilitiesConfigured } = (0, react_1.useContext)(context_1.PermissionlessContext);
11
+ const account = (0, wagmi_1.useAccount)();
12
+ const { data: availableCapabilities } = (0, experimental_1.useCapabilities)({
13
+ account: account.address
14
+ });
15
+ const memoisedCapabilities = (0, react_1.useMemo)(() => {
16
+ if (!availableCapabilities || !account.chainId)
17
+ return undefined;
18
+ const capabilitiesForChain = availableCapabilities[account.chainId];
19
+ if (capabilitiesConfigured === undefined)
20
+ return undefined;
21
+ let capabilities = undefined;
22
+ for (const capabilityConfigured in capabilitiesConfigured) {
23
+ if (capabilitiesForChain[capabilityConfigured]?.supported) {
24
+ if (!capabilities) {
25
+ capabilities = {};
26
+ }
27
+ capabilities[capabilityConfigured] = {
28
+ ...capabilitiesConfigured[capabilityConfigured]
29
+ };
30
+ }
31
+ }
32
+ return capabilities;
33
+ }, [availableCapabilities, account.chainId, capabilitiesConfigured]);
34
+ return { capabilities: memoisedCapabilities };
35
+ };
36
+ exports.useAvailableCapabilities = useAvailableCapabilities;
37
+ //# sourceMappingURL=useAvailableCapabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAvailableCapabilities.js","sourceRoot":"","sources":["../../hooks/useAvailableCapabilities.ts"],"names":[],"mappings":";AAAA,YAAY,CAAA;;;AAEZ,iCAA2C;AAE3C,iCAAkC;AAClC,qDAAoD;AACpD,wCAAkD;AAE3C,MAAM,wBAAwB,GAAG,GAAG,EAAE;IACzC,MAAM,EAAE,YAAY,EAAE,sBAAsB,EAAE,GAAG,IAAA,kBAAU,EACvD,+BAAqB,CACxB,CAAA;IAED,MAAM,OAAO,GAAG,IAAA,kBAAU,GAAE,CAAA;IAE5B,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,IAAA,8BAAe,EAAC;QACpD,OAAO,EAAE,OAAO,CAAC,OAAO;KAC3B,CAAC,CAAA;IAEF,MAAM,oBAAoB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACtC,IAAI,CAAC,qBAAqB,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,SAAS,CAAA;QAChE,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACnE,IAAI,sBAAsB,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QAE1D,IAAI,YAAY,GACZ,SAAS,CAAA;QAEb,KAAK,MAAM,oBAAoB,IAAI,sBAAsB,EAAE,CAAC;YACxD,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC;gBACxD,IAAI,CAAC,YAAY,EAAE,CAAC;oBAChB,YAAY,GAAG,EAAE,CAAA;gBACrB,CAAC;gBACD,YAAY,CAAC,oBAAoB,CAAC,GAAG;oBACjC,GAAG,sBAAsB,CAAC,oBAAoB,CAAC;iBAClD,CAAA;YACL,CAAC;QACL,CAAC;QAED,OAAO,YAAY,CAAA;IACvB,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAEpE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAA;AACjD,CAAC,CAAA;AAlCY,QAAA,wBAAwB,4BAkCpC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSendTransaction = void 0;
4
+ const react_query_1 = require("@tanstack/react-query");
5
+ const core_1 = require("@wagmi/core");
6
+ const experimental_1 = require("@wagmi/core/experimental");
7
+ const wagmi_1 = require("wagmi");
8
+ const useAvailableCapabilities_1 = require("./useAvailableCapabilities.js");
9
+ const sendTransactionMutationOptions = (config, parameters = {}) => {
10
+ return {
11
+ mutationFn(variables) {
12
+ if (parameters.capabilities) {
13
+ return (0, experimental_1.sendCalls)(config, {
14
+ calls: [variables],
15
+ capabilities: parameters.capabilities
16
+ });
17
+ }
18
+ return (0, core_1.sendTransaction)(config, variables);
19
+ },
20
+ mutationKey: ["sendTransaction"]
21
+ };
22
+ };
23
+ const useSendTransaction = (parameters = {}) => {
24
+ const { mutation } = parameters;
25
+ const { capabilities } = (0, useAvailableCapabilities_1.useAvailableCapabilities)();
26
+ const config = (0, wagmi_1.useConfig)(parameters);
27
+ const mutationOptions = sendTransactionMutationOptions(config, {
28
+ ...parameters,
29
+ capabilities
30
+ });
31
+ const { mutate, mutateAsync, ...result } = (0, react_query_1.useMutation)({
32
+ ...mutation,
33
+ ...mutationOptions
34
+ });
35
+ return {
36
+ ...result,
37
+ sendTransaction: mutate,
38
+ sendTransactionAsync: mutateAsync
39
+ };
40
+ };
41
+ exports.useSendTransaction = useSendTransaction;
42
+ //# sourceMappingURL=useSendTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSendTransaction.js","sourceRoot":"","sources":["../../hooks/useSendTransaction.ts"],"names":[],"mappings":";;;AAAA,uDAI8B;AAC9B,sCAA6C;AAC7C,2DAAoD;AAQpD,iCAAqE;AAMrE,yEAAqE;AAErE,MAAM,8BAA8B,GAAG,CACnC,MAAc,EACd,aAEI,EAAE,EACR,EAAE;IACA,OAAO;QACH,UAAU,CAAC,SAAS;YAChB,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;gBAC1B,OAAO,IAAA,wBAAS,EAAC,MAAM,EAAE;oBACrB,KAAK,EAAE,CAAC,SAAS,CAAC;oBAClB,YAAY,EAAE,UAAU,CAAC,YAAY;iBACxC,CAAC,CAAA;YACN,CAAC;YAED,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,SAAS,CAAoB,CAAA;QAChE,CAAC;QACD,WAAW,EAAE,CAAC,iBAAiB,CAAC;KAKnC,CAAA;AACL,CAAC,CAAA;AA2EM,MAAM,kBAAkB,GAAG,CAI9B,aAA4D,EAAE,EACjB,EAAE;IAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAA;IAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,mDAAwB,GAAE,CAAA;IAEnD,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,UAAU,CAAC,CAAA;IAEpC,MAAM,eAAe,GAAG,8BAA8B,CAAC,MAAM,EAAE;QAC3D,GAAG,UAAU;QACb,YAAY;KACf,CAAC,CAAA;IAEF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,GAAG,IAAA,yBAAW,EAAC;QACnD,GAAG,QAAQ;QACX,GAAG,eAAe;KACrB,CAAC,CAAA;IAGF,OAAO;QACH,GAAG,MAAM;QACT,eAAe,EAAE,MAAmC;QACpD,oBAAoB,EAAE,WAA6C;KACtE,CAAA;AACL,CAAC,CAAA;AA3BY,QAAA,kBAAkB,sBA2B9B"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.waitForTransactionReceiptQueryKey = waitForTransactionReceiptQueryKey;
5
+ exports.filterQueryOptions = filterQueryOptions;
6
+ exports.getCallsStatusQueryKey = getCallsStatusQueryKey;
7
+ exports.waitForCallsStatus = waitForCallsStatus;
8
+ exports.waitForTransactionReceiptQueryOptions = waitForTransactionReceiptQueryOptions;
9
+ exports.useWaitForTransactionReceipt = useWaitForTransactionReceipt;
10
+ const core_1 = require("@wagmi/core");
11
+ const core_2 = require("@wagmi/core");
12
+ const viem_1 = require("viem");
13
+ const actions_1 = require("viem/actions");
14
+ const experimental_1 = require("viem/experimental");
15
+ const utils_1 = require("viem/utils");
16
+ const wagmi_1 = require("wagmi");
17
+ const query_1 = require("wagmi/query");
18
+ const observe_1 = require("../utils/observe.js");
19
+ const useAvailableCapabilities_1 = require("./useAvailableCapabilities.js");
20
+ function waitForTransactionReceiptQueryKey(options = {}) {
21
+ const { ...rest } = options;
22
+ return ["waitForTransactionReceipt", filterQueryOptions(rest)];
23
+ }
24
+ function filterQueryOptions(options) {
25
+ const { _defaulted, behavior, gcTime, initialData, initialDataUpdatedAt, maxPages, meta, networkMode, queryFn, queryHash, queryKey, queryKeyHashFn, retry, retryDelay, structuralSharing, getPreviousPageParam, getNextPageParam, initialPageParam, _optimisticResults, enabled, notifyOnChangeProps, placeholderData, refetchInterval, refetchIntervalInBackground, refetchOnMount, refetchOnReconnect, refetchOnWindowFocus, retryOnMount, select, staleTime, suspense, throwOnError, config, connector, query, ...rest } = options;
26
+ return rest;
27
+ }
28
+ function getCallsStatusQueryKey(options) {
29
+ return ["callsStatus", filterQueryOptions(options)];
30
+ }
31
+ async function waitForCallsStatus(config, parameters) {
32
+ const { timeout = 0, id, pollingInterval, retryCount = 6, confirmations = 1 } = parameters;
33
+ const client = await (0, core_1.getConnectorClient)(config, {});
34
+ const observerId = (0, viem_1.stringify)(["waitForTransactionReceipt", client.uid, id]);
35
+ let count = 0;
36
+ let receipt;
37
+ return new Promise((resolve, reject) => {
38
+ if (timeout)
39
+ setTimeout(() => reject(new viem_1.WaitForTransactionReceiptTimeoutError({
40
+ hash: id
41
+ })), timeout);
42
+ const _unobserve = (0, observe_1.observe)(observerId, { resolve, reject }, (emit) => {
43
+ const _unwatch = (0, utils_1.getAction)(client, actions_1.watchBlockNumber, "watchBlockNumber")({
44
+ emitMissed: true,
45
+ emitOnBegin: true,
46
+ poll: true,
47
+ pollingInterval,
48
+ async onBlockNumber(blockNumber) {
49
+ const done = (fn) => {
50
+ _unwatch();
51
+ fn();
52
+ _unobserve();
53
+ };
54
+ if (count > retryCount)
55
+ done(() => emit.reject(new viem_1.WaitForTransactionReceiptTimeoutError({
56
+ hash: id
57
+ })));
58
+ try {
59
+ if (receipt) {
60
+ if (confirmations > 1 &&
61
+ (!receipt.receipts?.[0]?.blockNumber ||
62
+ blockNumber -
63
+ receipt.receipts?.[0]?.blockNumber +
64
+ 1n <
65
+ confirmations))
66
+ return;
67
+ if (receipt.status === "PENDING") {
68
+ return;
69
+ }
70
+ if (receipt.receipts?.length === 0) {
71
+ return;
72
+ }
73
+ const finalReceipt = receipt.receipts;
74
+ if (!finalReceipt) {
75
+ return;
76
+ }
77
+ const transactionReceipt = await (0, utils_1.getAction)(client, actions_1.getTransactionReceipt, "getTransactionReceipt")({ hash: finalReceipt[0].transactionHash });
78
+ done(() => emit.resolve({
79
+ ...transactionReceipt,
80
+ chainId: client.chain.id
81
+ }));
82
+ return;
83
+ }
84
+ receipt = await (0, utils_1.getAction)(client, experimental_1.getCallsStatus, "getCallsStatus")({ id });
85
+ if (receipt.status === "PENDING") {
86
+ return;
87
+ }
88
+ if (confirmations > 1 &&
89
+ (!receipt.receipts?.[0]?.blockNumber ||
90
+ blockNumber -
91
+ receipt.receipts?.[0]?.blockNumber +
92
+ 1n <
93
+ confirmations))
94
+ return;
95
+ if (receipt.receipts?.length === 0) {
96
+ return;
97
+ }
98
+ const finalReceipt = receipt.receipts;
99
+ if (!finalReceipt) {
100
+ return;
101
+ }
102
+ const transactionReceipt = await (0, utils_1.getAction)(client, actions_1.getTransactionReceipt, "getTransactionReceipt")({ hash: finalReceipt[0].transactionHash });
103
+ done(() => emit.resolve({
104
+ ...transactionReceipt,
105
+ chainId: client.chain.id
106
+ }));
107
+ }
108
+ catch (err) {
109
+ done(() => emit.reject(err));
110
+ }
111
+ finally {
112
+ count++;
113
+ }
114
+ }
115
+ });
116
+ });
117
+ });
118
+ }
119
+ function waitForTransactionReceiptQueryOptions(config, options) {
120
+ return {
121
+ async queryFn({ queryKey }) {
122
+ const { scopeKey: _, id, ...parameters } = queryKey[1];
123
+ if (!id)
124
+ throw new Error("id is required");
125
+ if (!options.capabilities && !(0, viem_1.isHash)(id)) {
126
+ throw new Error("capabilities or hash is required");
127
+ }
128
+ if (options.capabilities) {
129
+ const status = await waitForCallsStatus(config, {
130
+ id,
131
+ ...parameters
132
+ });
133
+ return status;
134
+ }
135
+ const status = await (0, core_1.waitForTransactionReceipt)(config, {
136
+ hash: id,
137
+ ...options,
138
+ ...parameters
139
+ });
140
+ return status;
141
+ },
142
+ queryKey: waitForTransactionReceiptQueryKey(options),
143
+ retry(failureCount, error) {
144
+ if (error instanceof core_2.ConnectorNotConnectedError)
145
+ return false;
146
+ return failureCount < 3;
147
+ }
148
+ };
149
+ }
150
+ function useWaitForTransactionReceipt(parameters = {}) {
151
+ const { query = {} } = parameters;
152
+ const { capabilities } = (0, useAvailableCapabilities_1.useAvailableCapabilities)();
153
+ const config = (0, wagmi_1.useConfig)(parameters);
154
+ const chainId = (0, wagmi_1.useChainId)({ config });
155
+ const enabled = Boolean(parameters.id && (query.enabled ?? true));
156
+ const options = waitForTransactionReceiptQueryOptions(config, {
157
+ ...parameters,
158
+ chainId: parameters.chainId ?? chainId,
159
+ capabilities
160
+ });
161
+ return (0, query_1.useQuery)({
162
+ ...query,
163
+ ...options,
164
+ enabled
165
+ });
166
+ }
167
+ //# sourceMappingURL=useWaitForTransactionReceipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWaitForTransactionReceipt.js","sourceRoot":"","sources":["../../hooks/useWaitForTransactionReceipt.ts"],"names":[],"mappings":"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"}
package/_cjs/index.js CHANGED
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.kernelSmartAccount = exports.biconomySmartAccount = exports.safeSmartAccount = exports.simpleSmartAccount = exports.smartAccount = void 0;
4
- const simpleSmartAccount_1 = require("./connectors/simpleSmartAccount.js");
5
- Object.defineProperty(exports, "simpleSmartAccount", { enumerable: true, get: function () { return simpleSmartAccount_1.simpleSmartAccount; } });
6
- const smartAccount_1 = require("./connectors/smartAccount.js");
7
- Object.defineProperty(exports, "smartAccount", { enumerable: true, get: function () { return smartAccount_1.smartAccount; } });
8
- const safeSmartAccount_1 = require("./connectors/safeSmartAccount.js");
9
- Object.defineProperty(exports, "safeSmartAccount", { enumerable: true, get: function () { return safeSmartAccount_1.safeSmartAccount; } });
10
- const biconomySmartAccount_1 = require("./connectors/biconomySmartAccount.js");
11
- Object.defineProperty(exports, "biconomySmartAccount", { enumerable: true, get: function () { return biconomySmartAccount_1.biconomySmartAccount; } });
12
- const kernelSmartAccount_1 = require("./connectors/kernelSmartAccount.js");
13
- Object.defineProperty(exports, "kernelSmartAccount", { enumerable: true, get: function () { return kernelSmartAccount_1.kernelSmartAccount; } });
3
+ exports.useWaitForTransactionReceipt = exports.useSendTransaction = exports.PermissionlessProvider = void 0;
4
+ var context_1 = require("./context.js");
5
+ Object.defineProperty(exports, "PermissionlessProvider", { enumerable: true, get: function () { return context_1.PermissionlessProvider; } });
6
+ var useSendTransaction_1 = require("./hooks/useSendTransaction.js");
7
+ Object.defineProperty(exports, "useSendTransaction", { enumerable: true, get: function () { return useSendTransaction_1.useSendTransaction; } });
8
+ var useWaitForTransactionReceipt_1 = require("./hooks/useWaitForTransactionReceipt.js");
9
+ Object.defineProperty(exports, "useWaitForTransactionReceipt", { enumerable: true, get: function () { return useWaitForTransactionReceipt_1.useWaitForTransactionReceipt; } });
14
10
  //# sourceMappingURL=index.js.map
package/_cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,wEAGwC;AAoBpC,mGArBA,uCAAkB,OAqBA;AAnBtB,4DAAwD;AAkBpD,6FAlBK,2BAAY,OAkBL;AAhBhB,oEAGsC;AAgBlC,iGAjBA,mCAAgB,OAiBA;AAdpB,4EAG0C;AAatC,qGAdA,2CAAoB,OAcA;AAXxB,wEAGwC;AAUpC,mGAXA,uCAAkB,OAWA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,qCAGkB;AAFd,iHAAA,sBAAsB,OAAA;AAI1B,iEAImC;AAH/B,wHAAA,kBAAkB,OAAA;AAItB,qFAI6C;AAHzC,4IAAA,4BAA4B,OAAA"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cleanupCache = exports.listenersCache = void 0;
4
+ exports.observe = observe;
5
+ exports.listenersCache = new Map();
6
+ exports.cleanupCache = new Map();
7
+ let callbackCount = 0;
8
+ function observe(observerId, callbacks, fn) {
9
+ const callbackId = ++callbackCount;
10
+ const getListeners = () => exports.listenersCache.get(observerId) || [];
11
+ const unsubscribe = () => {
12
+ const listeners = getListeners();
13
+ exports.listenersCache.set(observerId, listeners.filter((cb) => cb.id !== callbackId));
14
+ };
15
+ const unwatch = () => {
16
+ const cleanup = exports.cleanupCache.get(observerId);
17
+ if (getListeners().length === 1 && cleanup)
18
+ cleanup();
19
+ unsubscribe();
20
+ };
21
+ const listeners = getListeners();
22
+ exports.listenersCache.set(observerId, [
23
+ ...listeners,
24
+ { id: callbackId, fns: callbacks }
25
+ ]);
26
+ if (listeners && listeners.length > 0)
27
+ return unwatch;
28
+ const emit = {};
29
+ for (const key in callbacks) {
30
+ emit[key] = ((...args) => {
31
+ const listeners = getListeners();
32
+ if (listeners.length === 0)
33
+ return;
34
+ for (const listener of listeners)
35
+ listener.fns[key]?.(...args);
36
+ });
37
+ }
38
+ const cleanup = fn(emit);
39
+ if (typeof cleanup === "function")
40
+ exports.cleanupCache.set(observerId, cleanup);
41
+ return unwatch;
42
+ }
43
+ //# sourceMappingURL=observe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe.js","sourceRoot":"","sources":["../../utils/observe.ts"],"names":[],"mappings":";;;AA6BA,0BA8CC;AAjEY,QAAA,cAAc,GAAiB,IAAI,GAAG,EAGhD,CAAA;AAEU,QAAA,YAAY,GAAiB,IAAI,GAAG,EAAsB,CAAA;AAOvE,IAAI,aAAa,GAAG,CAAC,CAAA;AAOrB,SAAgB,OAAO,CACnB,UAAkB,EAClB,SAAoB,EACpB,EAA2B;IAE3B,MAAM,UAAU,GAAG,EAAE,aAAa,CAAA;IAElC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,sBAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;IAE/D,MAAM,WAAW,GAAG,GAAG,EAAE;QACrB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;QAChC,sBAAc,CAAC,GAAG,CACd,UAAU,EACV,SAAS,CAAC,MAAM,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,CACtD,CAAA;IACL,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,oBAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC5C,IAAI,YAAY,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO;YAAE,OAAO,EAAE,CAAA;QACrD,WAAW,EAAE,CAAA;IACjB,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAChC,sBAAc,CAAC,GAAG,CAAC,UAAU,EAAE;QAC3B,GAAG,SAAS;QACZ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE;KACrC,CAAC,CAAA;IAEF,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IAErD,MAAM,IAAI,GAAc,EAAe,CAAA;IACvC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CACT,GAAG,IAAyD,EAC9D,EAAE;YACA,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;YAChC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAM;YAClC,KAAK,MAAM,QAAQ,IAAI,SAAS;gBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;QAClE,CAAC,CAAgD,CAAA;IACrD,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACxB,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,oBAAY,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAExE,OAAO,OAAO,CAAA;AAClB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { createContext, createElement } from "react";
2
+ export const PermissionlessContext = createContext({
3
+ capabilities: {}
4
+ });
5
+ export const PermissionlessProvider = (parameters) => {
6
+ const { capabilities, children } = parameters;
7
+ const props = { value: { capabilities } };
8
+ return createElement(PermissionlessContext.Provider, props, children);
9
+ };
10
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAGpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAE/C;IACC,YAAY,EAAE,EAAE;CACnB,CAAC,CAAA;AAMF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,UAAgE,EAClE,EAAE;IACA,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAA;IAE7C,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,CAAA;IAEzC,OAAO,aAAa,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;AACzE,CAAC,CAAA"}
@@ -0,0 +1,33 @@
1
+ "use client";
2
+ import { useContext, useMemo } from "react";
3
+ import { useAccount } from "wagmi";
4
+ import { useCapabilities } from "wagmi/experimental";
5
+ import { PermissionlessContext } from "../context.js";
6
+ export const useAvailableCapabilities = () => {
7
+ const { capabilities: capabilitiesConfigured } = useContext(PermissionlessContext);
8
+ const account = useAccount();
9
+ const { data: availableCapabilities } = useCapabilities({
10
+ account: account.address
11
+ });
12
+ const memoisedCapabilities = useMemo(() => {
13
+ if (!availableCapabilities || !account.chainId)
14
+ return undefined;
15
+ const capabilitiesForChain = availableCapabilities[account.chainId];
16
+ if (capabilitiesConfigured === undefined)
17
+ return undefined;
18
+ let capabilities = undefined;
19
+ for (const capabilityConfigured in capabilitiesConfigured) {
20
+ if (capabilitiesForChain[capabilityConfigured]?.supported) {
21
+ if (!capabilities) {
22
+ capabilities = {};
23
+ }
24
+ capabilities[capabilityConfigured] = {
25
+ ...capabilitiesConfigured[capabilityConfigured]
26
+ };
27
+ }
28
+ }
29
+ return capabilities;
30
+ }, [availableCapabilities, account.chainId, capabilitiesConfigured]);
31
+ return { capabilities: memoisedCapabilities };
32
+ };
33
+ //# sourceMappingURL=useAvailableCapabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAvailableCapabilities.js","sourceRoot":"","sources":["../../hooks/useAvailableCapabilities.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IACzC,MAAM,EAAE,YAAY,EAAE,sBAAsB,EAAE,GAAG,UAAU,CACvD,qBAAqB,CACxB,CAAA;IAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAE5B,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,eAAe,CAAC;QACpD,OAAO,EAAE,OAAO,CAAC,OAAO;KAC3B,CAAC,CAAA;IAEF,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,EAAE;QACtC,IAAI,CAAC,qBAAqB,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,SAAS,CAAA;QAChE,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACnE,IAAI,sBAAsB,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QAE1D,IAAI,YAAY,GACZ,SAAS,CAAA;QAEb,KAAK,MAAM,oBAAoB,IAAI,sBAAsB,EAAE,CAAC;YACxD,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC;gBACxD,IAAI,CAAC,YAAY,EAAE,CAAC;oBAChB,YAAY,GAAG,EAAE,CAAA;gBACrB,CAAC;gBACD,YAAY,CAAC,oBAAoB,CAAC,GAAG;oBACjC,GAAG,sBAAsB,CAAC,oBAAoB,CAAC;iBAClD,CAAA;YACL,CAAC;QACL,CAAC;QAED,OAAO,YAAY,CAAA;IACvB,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAEpE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAA;AACjD,CAAC,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { useMutation } from "@tanstack/react-query";
2
+ import { sendTransaction } from "@wagmi/core";
3
+ import { sendCalls } from "@wagmi/core/experimental";
4
+ import { useConfig } from "wagmi";
5
+ import { useAvailableCapabilities } from "./useAvailableCapabilities.js";
6
+ const sendTransactionMutationOptions = (config, parameters = {}) => {
7
+ return {
8
+ mutationFn(variables) {
9
+ if (parameters.capabilities) {
10
+ return sendCalls(config, {
11
+ calls: [variables],
12
+ capabilities: parameters.capabilities
13
+ });
14
+ }
15
+ return sendTransaction(config, variables);
16
+ },
17
+ mutationKey: ["sendTransaction"]
18
+ };
19
+ };
20
+ export const useSendTransaction = (parameters = {}) => {
21
+ const { mutation } = parameters;
22
+ const { capabilities } = useAvailableCapabilities();
23
+ const config = useConfig(parameters);
24
+ const mutationOptions = sendTransactionMutationOptions(config, {
25
+ ...parameters,
26
+ capabilities
27
+ });
28
+ const { mutate, mutateAsync, ...result } = useMutation({
29
+ ...mutation,
30
+ ...mutationOptions
31
+ });
32
+ return {
33
+ ...result,
34
+ sendTransaction: mutate,
35
+ sendTransactionAsync: mutateAsync
36
+ };
37
+ };
38
+ //# sourceMappingURL=useSendTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSendTransaction.js","sourceRoot":"","sources":["../../hooks/useSendTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,WAAW,EACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAQpD,OAAO,EAAsC,SAAS,EAAE,MAAM,OAAO,CAAA;AAMrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAErE,MAAM,8BAA8B,GAAG,CACnC,MAAc,EACd,aAEI,EAAE,EACR,EAAE;IACA,OAAO;QACH,UAAU,CAAC,SAAS;YAChB,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;gBAC1B,OAAO,SAAS,CAAC,MAAM,EAAE;oBACrB,KAAK,EAAE,CAAC,SAAS,CAAC;oBAClB,YAAY,EAAE,UAAU,CAAC,YAAY;iBACxC,CAAC,CAAA;YACN,CAAC;YAED,OAAO,eAAe,CAAC,MAAM,EAAE,SAAS,CAAoB,CAAA;QAChE,CAAC;QACD,WAAW,EAAE,CAAC,iBAAiB,CAAC;KAKnC,CAAA;AACL,CAAC,CAAA;AA2ED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAI9B,aAA4D,EAAE,EACjB,EAAE;IAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAA;IAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,wBAAwB,EAAE,CAAA;IAEnD,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IAEpC,MAAM,eAAe,GAAG,8BAA8B,CAAC,MAAM,EAAE;QAC3D,GAAG,UAAU;QACb,YAAY;KACf,CAAC,CAAA;IAEF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,GAAG,WAAW,CAAC;QACnD,GAAG,QAAQ;QACX,GAAG,eAAe;KACrB,CAAC,CAAA;IAGF,OAAO;QACH,GAAG,MAAM;QACT,eAAe,EAAE,MAAmC;QACpD,oBAAoB,EAAE,WAA6C;KACtE,CAAA;AACL,CAAC,CAAA"}