@pepu-chain/sdk 0.0.0-stage → 0.2.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 (244) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +590 -2
  3. package/dist/aa/kernel.cjs +41 -0
  4. package/dist/aa/kernel.cjs.map +1 -0
  5. package/dist/aa/kernel.d.cts +88 -0
  6. package/dist/aa/kernel.d.ts +88 -0
  7. package/dist/aa/kernel.guard.js +15 -0
  8. package/dist/aa/kernel.js +11 -0
  9. package/dist/aa/kernel.js.map +1 -0
  10. package/dist/aa/react-direct.cjs +111 -0
  11. package/dist/aa/react-direct.cjs.map +1 -0
  12. package/dist/aa/react-direct.d.cts +42 -0
  13. package/dist/aa/react-direct.d.ts +42 -0
  14. package/dist/aa/react-direct.guard.js +15 -0
  15. package/dist/aa/react-direct.js +107 -0
  16. package/dist/aa/react-direct.js.map +1 -0
  17. package/dist/aa/react.cjs +152 -0
  18. package/dist/aa/react.cjs.map +1 -0
  19. package/dist/aa/react.d.cts +62 -0
  20. package/dist/aa/react.d.ts +62 -0
  21. package/dist/aa/react.guard.js +15 -0
  22. package/dist/aa/react.js +147 -0
  23. package/dist/aa/react.js.map +1 -0
  24. package/dist/aa.cjs +84 -0
  25. package/dist/aa.cjs.map +1 -0
  26. package/dist/aa.d.cts +85 -0
  27. package/dist/aa.d.ts +85 -0
  28. package/dist/aa.js +11 -0
  29. package/dist/aa.js.map +1 -0
  30. package/dist/api-Dz4sCHH_.d.cts +654 -0
  31. package/dist/api-Dz4sCHH_.d.ts +654 -0
  32. package/dist/calls-BRPjKgjl.d.cts +70 -0
  33. package/dist/calls-z_EQOtFb.d.ts +70 -0
  34. package/dist/chains-DK13zGIp.d.cts +235 -0
  35. package/dist/chains-DK13zGIp.d.ts +235 -0
  36. package/dist/chunk-3XUGQODR.js +194 -0
  37. package/dist/chunk-3XUGQODR.js.map +1 -0
  38. package/dist/chunk-45KSZH26.cjs +145 -0
  39. package/dist/chunk-45KSZH26.cjs.map +1 -0
  40. package/dist/chunk-4GINFJO6.cjs +44 -0
  41. package/dist/chunk-4GINFJO6.cjs.map +1 -0
  42. package/dist/chunk-62M2LKQW.js +136 -0
  43. package/dist/chunk-62M2LKQW.js.map +1 -0
  44. package/dist/chunk-6DSZ4Z2N.js +498 -0
  45. package/dist/chunk-6DSZ4Z2N.js.map +1 -0
  46. package/dist/chunk-7MNJF2OB.cjs +72 -0
  47. package/dist/chunk-7MNJF2OB.cjs.map +1 -0
  48. package/dist/chunk-7PVR7QSE.js +45 -0
  49. package/dist/chunk-7PVR7QSE.js.map +1 -0
  50. package/dist/chunk-A5LP2UCS.cjs +2729 -0
  51. package/dist/chunk-A5LP2UCS.cjs.map +1 -0
  52. package/dist/chunk-AJS4UFQX.cjs +121 -0
  53. package/dist/chunk-AJS4UFQX.cjs.map +1 -0
  54. package/dist/chunk-BGALSKAF.cjs +315 -0
  55. package/dist/chunk-BGALSKAF.cjs.map +1 -0
  56. package/dist/chunk-C2XW44FI.cjs +200 -0
  57. package/dist/chunk-C2XW44FI.cjs.map +1 -0
  58. package/dist/chunk-C7IC36XS.cjs +13 -0
  59. package/dist/chunk-C7IC36XS.cjs.map +1 -0
  60. package/dist/chunk-D52PADVY.js +84 -0
  61. package/dist/chunk-D52PADVY.js.map +1 -0
  62. package/dist/chunk-DH6BFNVJ.cjs +272 -0
  63. package/dist/chunk-DH6BFNVJ.cjs.map +1 -0
  64. package/dist/chunk-DPCZJLB3.cjs +87 -0
  65. package/dist/chunk-DPCZJLB3.cjs.map +1 -0
  66. package/dist/chunk-EHBPIYY4.js +262 -0
  67. package/dist/chunk-EHBPIYY4.js.map +1 -0
  68. package/dist/chunk-ESMNAXUI.js +86 -0
  69. package/dist/chunk-ESMNAXUI.js.map +1 -0
  70. package/dist/chunk-F2R473FR.js +304 -0
  71. package/dist/chunk-F2R473FR.js.map +1 -0
  72. package/dist/chunk-IB2FSPMJ.js +66 -0
  73. package/dist/chunk-IB2FSPMJ.js.map +1 -0
  74. package/dist/chunk-IG7RSL2Y.cjs +178 -0
  75. package/dist/chunk-IG7RSL2Y.cjs.map +1 -0
  76. package/dist/chunk-IY3ALPUJ.js +2716 -0
  77. package/dist/chunk-IY3ALPUJ.js.map +1 -0
  78. package/dist/chunk-J3O2ZGG3.cjs +93 -0
  79. package/dist/chunk-J3O2ZGG3.cjs.map +1 -0
  80. package/dist/chunk-J6UXXHBE.js +37 -0
  81. package/dist/chunk-J6UXXHBE.js.map +1 -0
  82. package/dist/chunk-JLZ4LZ4Z.js +22 -0
  83. package/dist/chunk-JLZ4LZ4Z.js.map +1 -0
  84. package/dist/chunk-K7JSQPZO.cjs +231 -0
  85. package/dist/chunk-K7JSQPZO.cjs.map +1 -0
  86. package/dist/chunk-KJYNF5KH.js +224 -0
  87. package/dist/chunk-KJYNF5KH.js.map +1 -0
  88. package/dist/chunk-KVG3AYYR.js +99 -0
  89. package/dist/chunk-KVG3AYYR.js.map +1 -0
  90. package/dist/chunk-NE3QKDOB.cjs +24 -0
  91. package/dist/chunk-NE3QKDOB.cjs.map +1 -0
  92. package/dist/chunk-NVOPDXTA.cjs +95 -0
  93. package/dist/chunk-NVOPDXTA.cjs.map +1 -0
  94. package/dist/chunk-OH3QMAIB.js +11 -0
  95. package/dist/chunk-OH3QMAIB.js.map +1 -0
  96. package/dist/chunk-PHM3ZORG.cjs +110 -0
  97. package/dist/chunk-PHM3ZORG.cjs.map +1 -0
  98. package/dist/chunk-R5PXQNO3.cjs +209 -0
  99. package/dist/chunk-R5PXQNO3.cjs.map +1 -0
  100. package/dist/chunk-RCMKPJZO.cjs +49 -0
  101. package/dist/chunk-RCMKPJZO.cjs.map +1 -0
  102. package/dist/chunk-SVWRRALU.cjs +17 -0
  103. package/dist/chunk-SVWRRALU.cjs.map +1 -0
  104. package/dist/chunk-T43PQXJD.js +202 -0
  105. package/dist/chunk-T43PQXJD.js.map +1 -0
  106. package/dist/chunk-VBH3JLQ5.js +116 -0
  107. package/dist/chunk-VBH3JLQ5.js.map +1 -0
  108. package/dist/chunk-VF3D6KLQ.cjs +94 -0
  109. package/dist/chunk-VF3D6KLQ.cjs.map +1 -0
  110. package/dist/chunk-VTQIHMF3.js +82 -0
  111. package/dist/chunk-VTQIHMF3.js.map +1 -0
  112. package/dist/chunk-W3JN3YIW.js +15 -0
  113. package/dist/chunk-W3JN3YIW.js.map +1 -0
  114. package/dist/chunk-WANILJZQ.cjs +87 -0
  115. package/dist/chunk-WANILJZQ.cjs.map +1 -0
  116. package/dist/chunk-XC4IBCI2.js +86 -0
  117. package/dist/chunk-XC4IBCI2.js.map +1 -0
  118. package/dist/chunk-YKEWWQEJ.js +165 -0
  119. package/dist/chunk-YKEWWQEJ.js.map +1 -0
  120. package/dist/chunk-YQL7NISX.cjs +515 -0
  121. package/dist/chunk-YQL7NISX.cjs.map +1 -0
  122. package/dist/chunk-ZB6SVBK4.js +89 -0
  123. package/dist/chunk-ZB6SVBK4.js.map +1 -0
  124. package/dist/combo/react.cjs +236 -0
  125. package/dist/combo/react.cjs.map +1 -0
  126. package/dist/combo/react.d.cts +148 -0
  127. package/dist/combo/react.d.ts +148 -0
  128. package/dist/combo/react.guard.js +15 -0
  129. package/dist/combo/react.js +230 -0
  130. package/dist/combo/react.js.map +1 -0
  131. package/dist/combo.cjs +263 -0
  132. package/dist/combo.cjs.map +1 -0
  133. package/dist/combo.d.cts +139 -0
  134. package/dist/combo.d.ts +139 -0
  135. package/dist/combo.guard.js +15 -0
  136. package/dist/combo.js +249 -0
  137. package/dist/combo.js.map +1 -0
  138. package/dist/config-CHjz7ZjZ.d.cts +57 -0
  139. package/dist/config-COjhIZTh.d.ts +57 -0
  140. package/dist/doctor.cjs +354 -0
  141. package/dist/doctor.cjs.map +1 -0
  142. package/dist/doctor.d.cts +177 -0
  143. package/dist/doctor.d.ts +177 -0
  144. package/dist/doctor.js +345 -0
  145. package/dist/doctor.js.map +1 -0
  146. package/dist/erc7677-DOW58QBE.d.cts +111 -0
  147. package/dist/erc7677-DOW58QBE.d.ts +111 -0
  148. package/dist/errors-CgX1vNj7.d.cts +100 -0
  149. package/dist/errors-CgX1vNj7.d.ts +100 -0
  150. package/dist/index.cjs +806 -0
  151. package/dist/index.cjs.map +1 -0
  152. package/dist/index.d.cts +2398 -0
  153. package/dist/index.d.ts +2398 -0
  154. package/dist/index.js +559 -0
  155. package/dist/index.js.map +1 -0
  156. package/dist/paymaster/server.cjs +38 -0
  157. package/dist/paymaster/server.cjs.map +1 -0
  158. package/dist/paymaster/server.d.cts +57 -0
  159. package/dist/paymaster/server.d.ts +57 -0
  160. package/dist/paymaster/server.js +36 -0
  161. package/dist/paymaster/server.js.map +1 -0
  162. package/dist/paymaster.cjs +356 -0
  163. package/dist/paymaster.cjs.map +1 -0
  164. package/dist/paymaster.d.cts +1851 -0
  165. package/dist/paymaster.d.ts +1851 -0
  166. package/dist/paymaster.js +289 -0
  167. package/dist/paymaster.js.map +1 -0
  168. package/dist/privy/react.cjs +49 -0
  169. package/dist/privy/react.cjs.map +1 -0
  170. package/dist/privy/react.d.cts +194 -0
  171. package/dist/privy/react.d.ts +194 -0
  172. package/dist/privy/react.guard.js +15 -0
  173. package/dist/privy/react.js +7 -0
  174. package/dist/privy/react.js.map +1 -0
  175. package/dist/privy/server.cjs +44 -0
  176. package/dist/privy/server.cjs.map +1 -0
  177. package/dist/privy/server.d.cts +192 -0
  178. package/dist/privy/server.d.ts +192 -0
  179. package/dist/privy/server.guard.js +15 -0
  180. package/dist/privy/server.js +6 -0
  181. package/dist/privy/server.js.map +1 -0
  182. package/dist/privy/wagmi.d.ts +90 -0
  183. package/dist/privy/wagmi.guard.js +15 -0
  184. package/dist/privy/wagmi.js +55 -0
  185. package/dist/privy/wagmi.js.map +1 -0
  186. package/dist/privy.cjs +34 -0
  187. package/dist/privy.cjs.map +1 -0
  188. package/dist/privy.d.cts +4 -0
  189. package/dist/privy.d.ts +4 -0
  190. package/dist/privy.js +5 -0
  191. package/dist/privy.js.map +1 -0
  192. package/dist/react.cjs +73 -0
  193. package/dist/react.cjs.map +1 -0
  194. package/dist/react.d.cts +66 -0
  195. package/dist/react.d.ts +66 -0
  196. package/dist/react.guard.js +15 -0
  197. package/dist/react.js +68 -0
  198. package/dist/react.js.map +1 -0
  199. package/dist/requirements-C-QiJkL9.d.cts +134 -0
  200. package/dist/requirements-C-QiJkL9.d.ts +134 -0
  201. package/dist/scope-DBRkN7bR.d.cts +94 -0
  202. package/dist/scope-DBRkN7bR.d.ts +94 -0
  203. package/dist/server.cjs +59 -0
  204. package/dist/server.cjs.map +1 -0
  205. package/dist/server.d.cts +208 -0
  206. package/dist/server.d.ts +208 -0
  207. package/dist/server.js +8 -0
  208. package/dist/server.js.map +1 -0
  209. package/dist/session/kernel.cjs +83 -0
  210. package/dist/session/kernel.cjs.map +1 -0
  211. package/dist/session/kernel.d.cts +131 -0
  212. package/dist/session/kernel.d.ts +131 -0
  213. package/dist/session/kernel.guard.js +15 -0
  214. package/dist/session/kernel.js +13 -0
  215. package/dist/session/kernel.js.map +1 -0
  216. package/dist/session/react.cjs +38 -0
  217. package/dist/session/react.cjs.map +1 -0
  218. package/dist/session/react.d.cts +119 -0
  219. package/dist/session/react.d.ts +119 -0
  220. package/dist/session/react.guard.js +15 -0
  221. package/dist/session/react.js +8 -0
  222. package/dist/session/react.js.map +1 -0
  223. package/dist/session/server.cjs +268 -0
  224. package/dist/session/server.cjs.map +1 -0
  225. package/dist/session/server.d.cts +151 -0
  226. package/dist/session/server.d.ts +151 -0
  227. package/dist/session/server.guard.js +15 -0
  228. package/dist/session/server.js +252 -0
  229. package/dist/session/server.js.map +1 -0
  230. package/dist/session.cjs +74 -0
  231. package/dist/session.cjs.map +1 -0
  232. package/dist/session.d.cts +3 -0
  233. package/dist/session.d.ts +3 -0
  234. package/dist/session.js +5 -0
  235. package/dist/session.js.map +1 -0
  236. package/dist/status-Dx9zAFo9.d.ts +327 -0
  237. package/dist/status-wgTM26V7.d.cts +327 -0
  238. package/dist/store-CjmLgp9g.d.cts +64 -0
  239. package/dist/store-CjmLgp9g.d.ts +64 -0
  240. package/dist/types-BEEM7WdG.d.cts +25 -0
  241. package/dist/types-BEEM7WdG.d.ts +25 -0
  242. package/dist/types-BilBTDqK.d.cts +27 -0
  243. package/dist/types-BilBTDqK.d.ts +27 -0
  244. package/package.json +245 -3
@@ -0,0 +1,90 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ import { Config } from 'wagmi';
3
+ import { P as PepuChain } from '../chains-DK13zGIp.js';
4
+ import { PepuPrivyProviderProps, PepuPrivyProvider } from './react.js';
5
+ import 'viem';
6
+ import 'react';
7
+ import '@privy-io/react-auth';
8
+ import '../errors-CgX1vNj7.js';
9
+ import '../config-COjhIZTh.js';
10
+
11
+ /**
12
+ * `@pepu-chain/sdk/privy/wagmi` (browser). wagmi config for PEPU, a combined
13
+ * Privy + react-query + wagmi provider, and the active-wallet pin.
14
+ *
15
+ * `react` is never imported here directly (the boundary test only allows it in
16
+ * `react.ts` files): React-level glue lives in `./react.ts` and is reused.
17
+ *
18
+ * Optional peers of this entry only: `wagmi`, `@privy-io/wagmi`,
19
+ * `@tanstack/react-query`.
20
+ */
21
+ /**
22
+ * Default policy: keep the user's Privy embedded wallet pinned as wagmi's active
23
+ * account whenever one exists. Pass `{ enabled: false }` to `useActiveWalletPin`
24
+ * (or `pinEmbeddedWallet={false}` to the provider) to opt out, for example for
25
+ * an app that is deliberately external-wallet-first.
26
+ *
27
+ * Ported from templates/consumer-app/lib/wallet.ts.
28
+ */
29
+ declare const EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT = true;
30
+ /**
31
+ * A wagmi config for PEPU, built with `@privy-io/wagmi`'s `createConfig` (plain
32
+ * wagmi's is a documented footgun with Privy: embedded wallets would not appear
33
+ * as a connector). The chain carries `contracts.multicall3` at PEPU's own
34
+ * address, so batched reads work.
35
+ *
36
+ * Ported from templates/consumer-app/lib/wagmi-config.ts.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const wagmiConfig = pepuWagmiConfig();
41
+ * const custom = pepuWagmiConfig({ rpcUrl: "https://my-rpc.example.com" });
42
+ * ```
43
+ */
44
+ declare function pepuWagmiConfig(o?: {
45
+ chain?: PepuChain;
46
+ rpcUrl?: string;
47
+ }): Config;
48
+ /**
49
+ * Keeps wagmi's active account (what `useAccount`, `useBalance` and
50
+ * `useSendTransaction` act on) pinned to the user's Privy embedded wallet.
51
+ * Without it an installed extension such as Phantom can silently become the
52
+ * active account. It only calls `setActiveWallet` when the active address
53
+ * differs from the embedded wallet's, so it cannot loop; a user with no
54
+ * embedded wallet is left alone. Call it once near the root, inside the wagmi
55
+ * provider (`PepuPrivyWagmiProvider` already does).
56
+ *
57
+ * Ported from templates/consumer-app/lib/wallet.ts (`useActiveWalletSync`).
58
+ *
59
+ * @example
60
+ * ```tsx
61
+ * function Pin() { useActiveWalletPin(); return null; }
62
+ * ```
63
+ */
64
+ declare function useActiveWalletPin(o?: {
65
+ enabled?: boolean;
66
+ }): void;
67
+ type PepuPrivyWagmiProviderProps = Omit<PepuPrivyProviderProps, "wrapper"> & {
68
+ wagmiConfig?: Config | undefined;
69
+ queryClient?: QueryClient | undefined;
70
+ /** Default {@link EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT}. */
71
+ pinEmbeddedWallet?: boolean | undefined;
72
+ };
73
+ /**
74
+ * `PepuPrivyProvider` + react-query + `@privy-io/wagmi`'s `WagmiProvider`, in
75
+ * the order Privy requires, with the active-wallet pin mounted. Defaults to
76
+ * {@link pepuWagmiConfig} and a shared `QueryClient` (a fresh one per render on
77
+ * the server, so requests never share a cache).
78
+ *
79
+ * Ported from templates/consumer-app/app/providers.tsx.
80
+ *
81
+ * @example
82
+ * ```tsx
83
+ * <PepuPrivyWagmiProvider appId={process.env.NEXT_PUBLIC_PRIVY_APP_ID}>
84
+ * <App />
85
+ * </PepuPrivyWagmiProvider>
86
+ * ```
87
+ */
88
+ declare function PepuPrivyWagmiProvider(p: PepuPrivyWagmiProviderProps): ReturnType<typeof PepuPrivyProvider>;
89
+
90
+ export { EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT, PepuPrivyWagmiProvider, type PepuPrivyWagmiProviderProps, pepuWagmiConfig, useActiveWalletPin };
@@ -0,0 +1,15 @@
1
+ // Generated by scripts/guard-peers.mjs. Used only under the "node" export condition.
2
+ const peers = ["react","@privy-io/react-auth","@privy-io/wagmi","wagmi","@tanstack/react-query"];
3
+ for (const peer of peers) {
4
+ try {
5
+ import.meta.resolve?.(peer);
6
+ } catch (e) {
7
+ if (e && e.code === "ERR_MODULE_NOT_FOUND") {
8
+ const err = new Error("@pepu-chain/sdk/privy/wagmi needs peer packages that are not installed: react @privy-io/react-auth @privy-io/wagmi wagmi @tanstack/react-query. Install with: npm i react @privy-io/react-auth @privy-io/wagmi wagmi @tanstack/react-query (or let create-pepu-app scaffold everything).");
9
+ err.code = "PEPU_MISSING_PEER";
10
+ throw err;
11
+ }
12
+ }
13
+ }
14
+ const mod = await import("./wagmi.js");
15
+ export const { EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT, PepuPrivyWagmiProvider, pepuWagmiConfig, useActiveWalletPin } = mod;
@@ -0,0 +1,55 @@
1
+ import { usePinEmbeddedWallet, PepuPrivyProvider, composeProviders } from '../chunk-EHBPIYY4.js';
2
+ import '../chunk-JLZ4LZ4Z.js';
3
+ import { pepuMainnet } from '../chunk-VTQIHMF3.js';
4
+ import '../chunk-3XUGQODR.js';
5
+ import '../chunk-6DSZ4Z2N.js';
6
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
7
+ import { createConfig, useSetActiveWallet, WagmiProvider } from '@privy-io/wagmi';
8
+ import { http, useAccount } from 'wagmi';
9
+
10
+ var EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT = true;
11
+ function pepuWagmiConfig(o = {}) {
12
+ const chain = o.chain ?? pepuMainnet;
13
+ return createConfig({
14
+ chains: [chain],
15
+ transports: { [chain.id]: http(o.rpcUrl) }
16
+ });
17
+ }
18
+ function useActiveWalletPin(o = {}) {
19
+ const { enabled = EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT } = o;
20
+ const { address } = useAccount();
21
+ const { setActiveWallet } = useSetActiveWallet();
22
+ usePinEmbeddedWallet({ enabled, activeAddress: address, setActiveWallet });
23
+ }
24
+ function ActiveWalletPinLeaf() {
25
+ useActiveWalletPin();
26
+ return null;
27
+ }
28
+ var wrapperCache = /* @__PURE__ */ new WeakMap();
29
+ function wrapperFor(config, client, pin) {
30
+ let byClient = wrapperCache.get(config);
31
+ if (!byClient) wrapperCache.set(config, byClient = /* @__PURE__ */ new WeakMap());
32
+ let slot = byClient.get(client);
33
+ if (!slot) byClient.set(client, slot = {});
34
+ const key = pin ? "pin" : "nopin";
35
+ return slot[key] ??= composeProviders(
36
+ [
37
+ [QueryClientProvider, { client }],
38
+ [WagmiProvider, { config }]
39
+ ],
40
+ pin ? [ActiveWalletPinLeaf] : []
41
+ );
42
+ }
43
+ var defaultConfig;
44
+ var defaultClient;
45
+ function PepuPrivyWagmiProvider(p) {
46
+ const { wagmiConfig, queryClient, pinEmbeddedWallet, ...rest } = p;
47
+ const config = wagmiConfig ?? (defaultConfig ??= pepuWagmiConfig());
48
+ const client = queryClient ?? (globalThis.window === void 0 ? new QueryClient() : defaultClient ??= new QueryClient());
49
+ const wrapper = wrapperFor(config, client, pinEmbeddedWallet ?? EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT);
50
+ return PepuPrivyProvider({ ...rest, wrapper });
51
+ }
52
+
53
+ export { EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT, PepuPrivyWagmiProvider, pepuWagmiConfig, useActiveWalletPin };
54
+ //# sourceMappingURL=wagmi.js.map
55
+ //# sourceMappingURL=wagmi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/privy/wagmi.ts"],"names":[],"mappings":";;;;;;;;;AA4BO,IAAM,oCAAA,GAAuC;AAgB7C,SAAS,eAAA,CAAgB,CAAA,GAA4C,EAAC,EAAW;AACtF,EAAA,MAAM,KAAA,GAAQ,EAAE,KAAA,IAAS,WAAA;AACzB,EAAA,OAAO,YAAA,CAAa;AAAA,IAClB,MAAA,EAAQ,CAAC,KAAK,CAAA;AAAA,IACd,UAAA,EAAY,EAAE,CAAC,KAAA,CAAM,EAAE,GAAG,IAAA,CAAK,CAAA,CAAE,MAAM,CAAA;AAAE,GACJ,CAAA;AACzC;AAkBO,SAAS,kBAAA,CAAmB,CAAA,GAA2B,EAAC,EAAS;AACtE,EAAA,MAAM,EAAE,OAAA,GAAU,oCAAA,EAAqC,GAAI,CAAA;AAC3D,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,UAAA,EAAW;AAC/B,EAAA,MAAM,EAAE,eAAA,EAAgB,GAAI,kBAAA,EAAmB;AAC/C,EAAA,oBAAA,CAAqB,EAAE,OAAA,EAAS,aAAA,EAAe,OAAA,EAAS,iBAAiB,CAAA;AAC3E;AAEA,SAAS,mBAAA,GAA4B;AACnC,EAAA,kBAAA,EAAmB;AACnB,EAAA,OAAO,IAAA;AACT;AAaA,IAAM,YAAA,uBAAmB,OAAA,EAAiF;AAE1G,SAAS,UAAA,CAAW,MAAA,EAAgB,MAAA,EAAqB,GAAA,EAAuB;AAC9E,EAAA,IAAI,QAAA,GAAW,YAAA,CAAa,GAAA,CAAI,MAAM,CAAA;AACtC,EAAA,IAAI,CAAC,UAAU,YAAA,CAAa,GAAA,CAAI,QAAS,QAAA,mBAAW,IAAI,SAAU,CAAA;AAClE,EAAA,IAAI,IAAA,GAAO,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA;AAC9B,EAAA,IAAI,CAAC,IAAA,EAAM,QAAA,CAAS,IAAI,MAAA,EAAS,IAAA,GAAO,EAAG,CAAA;AAC3C,EAAA,MAAM,GAAA,GAAM,MAAM,KAAA,GAAQ,OAAA;AAC1B,EAAA,OAAQ,IAAA,CAAK,GAAG,CAAA,KAAM,gBAAA;AAAA,IACpB;AAAA,MACE,CAAC,mBAAA,EAAqB,EAAE,MAAA,EAAQ,CAAA;AAAA,MAChC,CAAC,aAAA,EAAe,EAAE,MAAA,EAAQ;AAAA,KAC5B;AAAA,IACA,GAAA,GAAM,CAAC,mBAA2B,CAAA,GAAI;AAAC,GACzC;AACF;AAEA,IAAI,aAAA;AACJ,IAAI,aAAA;AAiBG,SAAS,uBAAuB,CAAA,EAAsE;AAC3G,EAAA,MAAM,EAAE,WAAA,EAAa,WAAA,EAAa,iBAAA,EAAmB,GAAG,MAAK,GAAI,CAAA;AACjE,EAAA,MAAM,MAAA,GAAS,WAAA,KAAgB,aAAA,KAAkB,eAAA,EAAgB,CAAA;AACjE,EAAA,MAAM,MAAA,GACJ,WAAA,KACE,UAAA,CAAoC,MAAA,KAAW,MAAA,GAAY,IAAI,WAAA,EAAY,GAAK,aAAA,KAAkB,IAAI,WAAA,EAAY,CAAA;AACtH,EAAA,MAAM,OAAA,GAAU,UAAA,CAAW,MAAA,EAAQ,MAAA,EAAQ,qBAAqB,oCAAoC,CAAA;AAGpG,EAAA,OAAO,iBAAA,CAAkB,EAAE,GAAG,IAAA,EAAM,SAAS,CAAA;AAC/C","file":"wagmi.js","sourcesContent":["import { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { createConfig, WagmiProvider, useSetActiveWallet } from \"@privy-io/wagmi\";\nimport { http, useAccount } from \"wagmi\";\nimport type { Config } from \"wagmi\";\nimport { pepuMainnet } from \"../chains.js\";\nimport type { PepuChain } from \"../chains.js\";\nimport { composeProviders, PepuPrivyProvider, usePinEmbeddedWallet } from \"./react.js\";\nimport type { PepuPrivyProviderProps } from \"./react.js\";\n\n/**\n * `@pepu-chain/sdk/privy/wagmi` (browser). wagmi config for PEPU, a combined\n * Privy + react-query + wagmi provider, and the active-wallet pin.\n *\n * `react` is never imported here directly (the boundary test only allows it in\n * `react.ts` files): React-level glue lives in `./react.ts` and is reused.\n *\n * Optional peers of this entry only: `wagmi`, `@privy-io/wagmi`,\n * `@tanstack/react-query`.\n */\n\n/**\n * Default policy: keep the user's Privy embedded wallet pinned as wagmi's active\n * account whenever one exists. Pass `{ enabled: false }` to `useActiveWalletPin`\n * (or `pinEmbeddedWallet={false}` to the provider) to opt out, for example for\n * an app that is deliberately external-wallet-first.\n *\n * Ported from templates/consumer-app/lib/wallet.ts.\n */\nexport const EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT = true;\n\n/**\n * A wagmi config for PEPU, built with `@privy-io/wagmi`'s `createConfig` (plain\n * wagmi's is a documented footgun with Privy: embedded wallets would not appear\n * as a connector). The chain carries `contracts.multicall3` at PEPU's own\n * address, so batched reads work.\n *\n * Ported from templates/consumer-app/lib/wagmi-config.ts.\n *\n * @example\n * ```ts\n * const wagmiConfig = pepuWagmiConfig();\n * const custom = pepuWagmiConfig({ rpcUrl: \"https://my-rpc.example.com\" });\n * ```\n */\nexport function pepuWagmiConfig(o: { chain?: PepuChain; rpcUrl?: string } = {}): Config {\n const chain = o.chain ?? pepuMainnet;\n return createConfig({\n chains: [chain],\n transports: { [chain.id]: http(o.rpcUrl) },\n } as Parameters<typeof createConfig>[0]) as unknown as Config;\n}\n\n/**\n * Keeps wagmi's active account (what `useAccount`, `useBalance` and\n * `useSendTransaction` act on) pinned to the user's Privy embedded wallet.\n * Without it an installed extension such as Phantom can silently become the\n * active account. It only calls `setActiveWallet` when the active address\n * differs from the embedded wallet's, so it cannot loop; a user with no\n * embedded wallet is left alone. Call it once near the root, inside the wagmi\n * provider (`PepuPrivyWagmiProvider` already does).\n *\n * Ported from templates/consumer-app/lib/wallet.ts (`useActiveWalletSync`).\n *\n * @example\n * ```tsx\n * function Pin() { useActiveWalletPin(); return null; }\n * ```\n */\nexport function useActiveWalletPin(o: { enabled?: boolean } = {}): void {\n const { enabled = EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT } = o;\n const { address } = useAccount();\n const { setActiveWallet } = useSetActiveWallet();\n usePinEmbeddedWallet({ enabled, activeAddress: address, setActiveWallet });\n}\n\nfunction ActiveWalletPinLeaf(): null {\n useActiveWalletPin();\n return null;\n}\n\nexport type PepuPrivyWagmiProviderProps = Omit<PepuPrivyProviderProps, \"wrapper\"> & {\n wagmiConfig?: Config | undefined;\n queryClient?: QueryClient | undefined;\n /** Default {@link EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT}. */\n pinEmbeddedWallet?: boolean | undefined;\n};\n\ntype Wrapper = NonNullable<PepuPrivyProviderProps[\"wrapper\"]>;\ntype Leaf = NonNullable<Parameters<typeof composeProviders>[1]>[number];\n// A wrapper must keep one component identity per (config, client, pin), or\n// React would remount the whole tree on every render.\nconst wrapperCache = new WeakMap<Config, WeakMap<QueryClient, Partial<Record<\"pin\" | \"nopin\", Wrapper>>>>();\n\nfunction wrapperFor(config: Config, client: QueryClient, pin: boolean): Wrapper {\n let byClient = wrapperCache.get(config);\n if (!byClient) wrapperCache.set(config, (byClient = new WeakMap()));\n let slot = byClient.get(client);\n if (!slot) byClient.set(client, (slot = {}));\n const key = pin ? \"pin\" : \"nopin\";\n return (slot[key] ??= composeProviders(\n [\n [QueryClientProvider, { client }],\n [WagmiProvider, { config }],\n ],\n pin ? [ActiveWalletPinLeaf as Leaf] : [],\n ));\n}\n\nlet defaultConfig: Config | undefined;\nlet defaultClient: QueryClient | undefined;\n\n/**\n * `PepuPrivyProvider` + react-query + `@privy-io/wagmi`'s `WagmiProvider`, in\n * the order Privy requires, with the active-wallet pin mounted. Defaults to\n * {@link pepuWagmiConfig} and a shared `QueryClient` (a fresh one per render on\n * the server, so requests never share a cache).\n *\n * Ported from templates/consumer-app/app/providers.tsx.\n *\n * @example\n * ```tsx\n * <PepuPrivyWagmiProvider appId={process.env.NEXT_PUBLIC_PRIVY_APP_ID}>\n * <App />\n * </PepuPrivyWagmiProvider>\n * ```\n */\nexport function PepuPrivyWagmiProvider(p: PepuPrivyWagmiProviderProps): ReturnType<typeof PepuPrivyProvider> {\n const { wagmiConfig, queryClient, pinEmbeddedWallet, ...rest } = p;\n const config = wagmiConfig ?? (defaultConfig ??= pepuWagmiConfig());\n const client =\n queryClient ??\n ((globalThis as { window?: unknown }).window === undefined ? new QueryClient() : (defaultClient ??= new QueryClient()));\n const wrapper = wrapperFor(config, client, pinEmbeddedWallet ?? EMBEDDED_WALLET_IS_ACTIVE_BY_DEFAULT);\n // PepuPrivyProvider is a hook-free function component, so calling it returns\n // its element without needing `createElement` (and so without importing react).\n return PepuPrivyProvider({ ...rest, wrapper });\n}\n"]}
package/dist/privy.cjs ADDED
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ var chunkNE3QKDOB_cjs = require('./chunk-NE3QKDOB.cjs');
4
+ require('./chunk-DPCZJLB3.cjs');
5
+ var chunkC2XW44FI_cjs = require('./chunk-C2XW44FI.cjs');
6
+
7
+
8
+
9
+ Object.defineProperty(exports, "createPepuPrivyConfig", {
10
+ enumerable: true,
11
+ get: function () { return chunkNE3QKDOB_cjs.createPepuPrivyConfig; }
12
+ });
13
+ Object.defineProperty(exports, "PEPU_PRIVY_REQUIREMENTS", {
14
+ enumerable: true,
15
+ get: function () { return chunkC2XW44FI_cjs.PEPU_PRIVY_REQUIREMENTS; }
16
+ });
17
+ Object.defineProperty(exports, "PRIVY_ENV", {
18
+ enumerable: true,
19
+ get: function () { return chunkC2XW44FI_cjs.PRIVY_ENV; }
20
+ });
21
+ Object.defineProperty(exports, "PRIVY_ENV_ALIASES", {
22
+ enumerable: true,
23
+ get: function () { return chunkC2XW44FI_cjs.PRIVY_ENV_ALIASES; }
24
+ });
25
+ Object.defineProperty(exports, "checkPrivyDashboardConfig", {
26
+ enumerable: true,
27
+ get: function () { return chunkC2XW44FI_cjs.checkPrivyDashboardConfig; }
28
+ });
29
+ Object.defineProperty(exports, "privyDashboardChecker", {
30
+ enumerable: true,
31
+ get: function () { return chunkC2XW44FI_cjs.privyDashboardChecker; }
32
+ });
33
+ //# sourceMappingURL=privy.cjs.map
34
+ //# sourceMappingURL=privy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"privy.cjs"}
@@ -0,0 +1,4 @@
1
+ export { C as CreatePepuPrivyConfigOptions, E as EmbeddedWalletCreateOnLogin, P as PepuPrivyClientConfig, a as PrivyLoginMethod, c as createPepuPrivyConfig } from './config-CHjz7ZjZ.cjs';
2
+ export { P as PEPU_PRIVY_REQUIREMENTS, a as PRIVY_ENV, b as PRIVY_ENV_ALIASES, c as PrivyDashboardCheckItem, d as PrivyDoctorCheck, e as PrivyPublicAppConfig, f as PrivyRequirement, g as PrivyRequirementResult, h as checkPrivyDashboardConfig, p as privyDashboardChecker } from './requirements-C-QiJkL9.cjs';
3
+ import './chains-DK13zGIp.cjs';
4
+ import 'viem';
@@ -0,0 +1,4 @@
1
+ export { C as CreatePepuPrivyConfigOptions, E as EmbeddedWalletCreateOnLogin, P as PepuPrivyClientConfig, a as PrivyLoginMethod, c as createPepuPrivyConfig } from './config-COjhIZTh.js';
2
+ export { P as PEPU_PRIVY_REQUIREMENTS, a as PRIVY_ENV, b as PRIVY_ENV_ALIASES, c as PrivyDashboardCheckItem, d as PrivyDoctorCheck, e as PrivyPublicAppConfig, f as PrivyRequirement, g as PrivyRequirementResult, h as checkPrivyDashboardConfig, p as privyDashboardChecker } from './requirements-C-QiJkL9.js';
3
+ import './chains-DK13zGIp.js';
4
+ import 'viem';
package/dist/privy.js ADDED
@@ -0,0 +1,5 @@
1
+ export { createPepuPrivyConfig } from './chunk-JLZ4LZ4Z.js';
2
+ import './chunk-VTQIHMF3.js';
3
+ export { PEPU_PRIVY_REQUIREMENTS, PRIVY_ENV, PRIVY_ENV_ALIASES, checkPrivyDashboardConfig, privyDashboardChecker } from './chunk-3XUGQODR.js';
4
+ //# sourceMappingURL=privy.js.map
5
+ //# sourceMappingURL=privy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"privy.js"}
package/dist/react.cjs ADDED
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+ /* @pepu-chain/peer-guard */(function(){var p=["react"];for(var i=0;i<p.length;i++){try{require.resolve(p[i])}catch(e){if(e&&e.code==="MODULE_NOT_FOUND"){var m="@pepu-chain/sdk/react needs a peer package that is not installed: react. Install with: npm i react (or let create-pepu-app scaffold everything).";var x=new Error(m);x.code="PEPU_MISSING_PEER";throw x}}}})();
3
+
4
+ var chunkBGALSKAF_cjs = require('./chunk-BGALSKAF.cjs');
5
+ require('./chunk-WANILJZQ.cjs');
6
+ require('./chunk-K7JSQPZO.cjs');
7
+ require('./chunk-VF3D6KLQ.cjs');
8
+ var chunkDPCZJLB3_cjs = require('./chunk-DPCZJLB3.cjs');
9
+ require('./chunk-YQL7NISX.cjs');
10
+ var react = require('react');
11
+ var viem = require('viem');
12
+
13
+ function usePepuBalance(client, options) {
14
+ const { address, token, pollingInterval } = options;
15
+ const [data, setData] = react.useState(void 0);
16
+ const [error, setError] = react.useState(void 0);
17
+ const [isLoading, setIsLoading] = react.useState(false);
18
+ const fetchBalance = react.useCallback(async () => {
19
+ if (!address) {
20
+ setData(void 0);
21
+ setError(void 0);
22
+ return;
23
+ }
24
+ setIsLoading(true);
25
+ try {
26
+ const balance = token ? await client.readContract({
27
+ address: token,
28
+ abi: viem.erc20Abi,
29
+ functionName: "balanceOf",
30
+ args: [address]
31
+ }) : await client.getBalance({ address });
32
+ setData(balance);
33
+ setError(void 0);
34
+ } catch (caught) {
35
+ setError(caught instanceof Error ? caught : new Error(String(caught)));
36
+ } finally {
37
+ setIsLoading(false);
38
+ }
39
+ }, [client, address, token]);
40
+ react.useEffect(() => {
41
+ void fetchBalance();
42
+ if (!pollingInterval) {
43
+ return;
44
+ }
45
+ const id = setInterval(() => {
46
+ void fetchBalance();
47
+ }, pollingInterval);
48
+ return () => clearInterval(id);
49
+ }, [fetchBalance, pollingInterval]);
50
+ const refetch = react.useCallback(() => {
51
+ void fetchBalance();
52
+ }, [fetchBalance]);
53
+ return { data, isLoading, error, refetch };
54
+ }
55
+ function usePepuChain(chainId) {
56
+ return react.useMemo(() => {
57
+ const chain = chunkDPCZJLB3_cjs.pepuChains.find((candidate) => candidate.id === chainId);
58
+ return { chain, isPepuChain: chain !== void 0 };
59
+ }, [chainId]);
60
+ }
61
+ function useSponsorshipStatus(options) {
62
+ const bundlerUrl = options?.bundlerUrl;
63
+ return react.useMemo(
64
+ () => chunkBGALSKAF_cjs.getSponsorshipStatus(bundlerUrl === void 0 ? void 0 : { bundlerUrl }),
65
+ [bundlerUrl]
66
+ );
67
+ }
68
+
69
+ exports.usePepuBalance = usePepuBalance;
70
+ exports.usePepuChain = usePepuChain;
71
+ exports.useSponsorshipStatus = useSponsorshipStatus;
72
+ //# sourceMappingURL=react.cjs.map
73
+ //# sourceMappingURL=react.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/usePepuBalance.ts","../src/react/usePepuChain.ts","../src/react/useSponsorshipStatus.ts"],"names":["useState","useCallback","erc20Abi","useEffect","useMemo","pepuChains","getSponsorshipStatus"],"mappings":";;;;;;;;;;;AAoCO,SAAS,cAAA,CACd,QACA,OAAA,EACsB;AACtB,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAO,eAAA,EAAgB,GAAI,OAAA;AAC5C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,eAA6B,MAAS,CAAA;AAC9D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAA4B,MAAS,CAAA;AAC/D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,KAAK,CAAA;AAEhD,EAAA,MAAM,YAAA,GAAeC,kBAAY,YAAY;AAC3C,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAA,CAAQ,MAAS,CAAA;AACjB,MAAA,QAAA,CAAS,MAAS,CAAA;AAClB,MAAA;AAAA,IACF;AACA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,KAAA,GACZ,MAAM,MAAA,CAAO,YAAA,CAAa;AAAA,QACxB,OAAA,EAAS,KAAA;AAAA,QACT,GAAA,EAAKC,aAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,OAAO;AAAA,OACf,CAAA,GACD,MAAM,OAAO,UAAA,CAAW,EAAE,SAAS,CAAA;AACvC,MAAA,OAAA,CAAQ,OAAO,CAAA;AACf,MAAA,QAAA,CAAS,KAAA,CAAS,CAAA;AAAA,IACpB,SAAS,MAAA,EAAQ;AACf,MAAA,QAAA,CAAS,MAAA,YAAkB,QAAQ,MAAA,GAAS,IAAI,MAAM,MAAA,CAAO,MAAM,CAAC,CAAC,CAAA;AAAA,IACvE,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAA,EAAS,KAAK,CAAC,CAAA;AAE3B,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,KAAK,YAAA,EAAa;AAClB,IAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAA,GAAK,YAAY,MAAM;AAC3B,MAAA,KAAK,YAAA,EAAa;AAAA,IACpB,GAAG,eAAe,CAAA;AAClB,IAAA,OAAO,MAAM,cAAc,EAAE,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,YAAA,EAAc,eAAe,CAAC,CAAA;AAElC,EAAA,MAAM,OAAA,GAAUF,kBAAY,MAAM;AAChC,IAAA,KAAK,YAAA,EAAa;AAAA,EACpB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,OAAA,EAAQ;AAC3C;ACnEO,SAAS,aAAa,OAAA,EAAiD;AAC5E,EAAA,OAAOG,cAAQ,MAAM;AACnB,IAAA,MAAM,QAAQC,4BAAA,CAAW,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,OAAO,CAAA;AACrE,IAAA,OAAO,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,KAAU,MAAA,EAAU;AAAA,EACnD,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACd;ACNO,SAAS,qBACd,OAAA,EACmB;AACnB,EAAA,MAAM,aAAa,OAAA,EAAS,UAAA;AAC5B,EAAA,OAAOD,aAAAA;AAAA,IACL,MAAME,sCAAA,CAAqB,UAAA,KAAe,SAAY,MAAA,GAAY,EAAE,YAAY,CAAA;AAAA,IAChF,CAAC,UAAU;AAAA,GACb;AACF","file":"react.cjs","sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { erc20Abi } from \"viem\";\nimport type { Address, PublicClient, Transport } from \"viem\";\n\nimport type { PepuChain } from \"../chains.js\";\n\n/** Options for {@link usePepuBalance}. */\nexport interface UsePepuBalanceOptions {\n /** Address to read a balance for. The hook holds `data` at `undefined` while this is `undefined`. */\n readonly address: Address | undefined;\n /** ERC-20 token address to read `balanceOf` for. Omit for the native PEPU balance (`client.getBalance`). */\n readonly token?: Address;\n /** Re-fetch on an interval, in milliseconds. Omit (or `0`) to fetch once. */\n readonly pollingInterval?: number;\n}\n\n/** Result of {@link usePepuBalance}. */\nexport interface UsePepuBalanceResult {\n /** The balance in the smallest unit (wei for native PEPU, the token's own base unit for an ERC-20), or `undefined` before the first successful fetch. */\n readonly data: bigint | undefined;\n readonly isLoading: boolean;\n readonly error: Error | undefined;\n /** Re-run the fetch immediately, outside the polling interval. */\n readonly refetch: () => void;\n}\n\n/**\n * Read (and optionally poll) an address's native PEPU balance, or an\n * ERC-20 token balance on a PEPU chain, given a viem `PublicClient`.\n *\n * Deliberately takes the client as a parameter rather than reaching for one\n * itself (e.g. via a context provider this package would have to define\n * and ship) — this keeps the hook usable with whatever client the host app\n * already has (its own `getPublicClient` call, wagmi's `usePublicClient()`,\n * etc.) instead of introducing a second, competing way to obtain one.\n */\nexport function usePepuBalance(\n client: PublicClient<Transport, PepuChain>,\n options: UsePepuBalanceOptions,\n): UsePepuBalanceResult {\n const { address, token, pollingInterval } = options;\n const [data, setData] = useState<bigint | undefined>(undefined);\n const [error, setError] = useState<Error | undefined>(undefined);\n const [isLoading, setIsLoading] = useState(false);\n\n const fetchBalance = useCallback(async () => {\n if (!address) {\n setData(undefined);\n setError(undefined);\n return;\n }\n setIsLoading(true);\n try {\n const balance = token\n ? await client.readContract({\n address: token,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [address],\n })\n : await client.getBalance({ address });\n setData(balance);\n setError(undefined);\n } catch (caught) {\n setError(caught instanceof Error ? caught : new Error(String(caught)));\n } finally {\n setIsLoading(false);\n }\n }, [client, address, token]);\n\n useEffect(() => {\n void fetchBalance();\n if (!pollingInterval) {\n return;\n }\n const id = setInterval(() => {\n void fetchBalance();\n }, pollingInterval);\n return () => clearInterval(id);\n }, [fetchBalance, pollingInterval]);\n\n const refetch = useCallback(() => {\n void fetchBalance();\n }, [fetchBalance]);\n\n return { data, isLoading, error, refetch };\n}\n","import { useMemo } from \"react\";\n\nimport { pepuChains } from \"../chains.js\";\nimport type { PepuChain } from \"../chains.js\";\n\n/** Result of {@link usePepuChain}. */\nexport interface UsePepuChainResult {\n /** The matching {@link PepuChain}, or `undefined` if `chainId` isn't one of PEPU's. */\n readonly chain: PepuChain | undefined;\n /** `true` iff `chainId` is one of PEPU's chain ids. Equivalent to `chain !== undefined`. */\n readonly isPepuChain: boolean;\n}\n\n/**\n * Resolve a raw chain id (e.g. from wagmi's `useChainId()`, or an injected\n * wallet's `eth_chainId`) to its {@link PepuChain} definition, if it's one\n * of PEPU's. Pure lookup over {@link pepuChains} — makes no network call\n * and holds no state beyond memoizing the result.\n */\nexport function usePepuChain(chainId: number | undefined): UsePepuChainResult {\n return useMemo(() => {\n const chain = pepuChains.find((candidate) => candidate.id === chainId);\n return { chain, isPepuChain: chain !== undefined };\n }, [chainId]);\n}\n","import { useMemo } from \"react\";\n\nimport { getSponsorshipStatus } from \"../aa/status.js\";\nimport type { GetSponsorshipStatusOptions, SponsorshipStatus } from \"../aa/status.js\";\n\n/**\n * React wrapper around {@link getSponsorshipStatus} — reports whether PEPU\n * gas sponsorship is available. **Deprecated: always reports unavailable.**\n * The hosted bundler and paymaster service are live and sponsorship is proven\n * on mainnet, but the ERC-7677 URL embeds a project token, so availability can\n * only be answered by a live probe. Use `usePepuSponsorship()` from\n * `@pepu-chain/sdk/aa/react` (it wraps `checkSponsorship`) instead. This hook\n * stays so 0.1 callers keep compiling.\n */\n/**\n * @deprecated Always reports unavailable. Use `usePepuSponsorship()` from\n * `@pepu-chain/sdk/aa/react` (live probe). Kept for 0.1 callers.\n */\nexport function useSponsorshipStatus(\n options?: GetSponsorshipStatusOptions,\n): SponsorshipStatus {\n const bundlerUrl = options?.bundlerUrl;\n return useMemo(\n () => getSponsorshipStatus(bundlerUrl === undefined ? undefined : { bundlerUrl }),\n [bundlerUrl],\n );\n}\n"]}
@@ -0,0 +1,66 @@
1
+ import { Address, PublicClient, Transport } from 'viem';
2
+ import { P as PepuChain } from './chains-DK13zGIp.cjs';
3
+ import { G as GetSponsorshipStatusOptions, c as SponsorshipStatus } from './status-wgTM26V7.cjs';
4
+ import './errors-CgX1vNj7.cjs';
5
+
6
+ /** Options for {@link usePepuBalance}. */
7
+ interface UsePepuBalanceOptions {
8
+ /** Address to read a balance for. The hook holds `data` at `undefined` while this is `undefined`. */
9
+ readonly address: Address | undefined;
10
+ /** ERC-20 token address to read `balanceOf` for. Omit for the native PEPU balance (`client.getBalance`). */
11
+ readonly token?: Address;
12
+ /** Re-fetch on an interval, in milliseconds. Omit (or `0`) to fetch once. */
13
+ readonly pollingInterval?: number;
14
+ }
15
+ /** Result of {@link usePepuBalance}. */
16
+ interface UsePepuBalanceResult {
17
+ /** The balance in the smallest unit (wei for native PEPU, the token's own base unit for an ERC-20), or `undefined` before the first successful fetch. */
18
+ readonly data: bigint | undefined;
19
+ readonly isLoading: boolean;
20
+ readonly error: Error | undefined;
21
+ /** Re-run the fetch immediately, outside the polling interval. */
22
+ readonly refetch: () => void;
23
+ }
24
+ /**
25
+ * Read (and optionally poll) an address's native PEPU balance, or an
26
+ * ERC-20 token balance on a PEPU chain, given a viem `PublicClient`.
27
+ *
28
+ * Deliberately takes the client as a parameter rather than reaching for one
29
+ * itself (e.g. via a context provider this package would have to define
30
+ * and ship) — this keeps the hook usable with whatever client the host app
31
+ * already has (its own `getPublicClient` call, wagmi's `usePublicClient()`,
32
+ * etc.) instead of introducing a second, competing way to obtain one.
33
+ */
34
+ declare function usePepuBalance(client: PublicClient<Transport, PepuChain>, options: UsePepuBalanceOptions): UsePepuBalanceResult;
35
+
36
+ /** Result of {@link usePepuChain}. */
37
+ interface UsePepuChainResult {
38
+ /** The matching {@link PepuChain}, or `undefined` if `chainId` isn't one of PEPU's. */
39
+ readonly chain: PepuChain | undefined;
40
+ /** `true` iff `chainId` is one of PEPU's chain ids. Equivalent to `chain !== undefined`. */
41
+ readonly isPepuChain: boolean;
42
+ }
43
+ /**
44
+ * Resolve a raw chain id (e.g. from wagmi's `useChainId()`, or an injected
45
+ * wallet's `eth_chainId`) to its {@link PepuChain} definition, if it's one
46
+ * of PEPU's. Pure lookup over {@link pepuChains} — makes no network call
47
+ * and holds no state beyond memoizing the result.
48
+ */
49
+ declare function usePepuChain(chainId: number | undefined): UsePepuChainResult;
50
+
51
+ /**
52
+ * React wrapper around {@link getSponsorshipStatus} — reports whether PEPU
53
+ * gas sponsorship is available. **Deprecated: always reports unavailable.**
54
+ * The hosted bundler and paymaster service are live and sponsorship is proven
55
+ * on mainnet, but the ERC-7677 URL embeds a project token, so availability can
56
+ * only be answered by a live probe. Use `usePepuSponsorship()` from
57
+ * `@pepu-chain/sdk/aa/react` (it wraps `checkSponsorship`) instead. This hook
58
+ * stays so 0.1 callers keep compiling.
59
+ */
60
+ /**
61
+ * @deprecated Always reports unavailable. Use `usePepuSponsorship()` from
62
+ * `@pepu-chain/sdk/aa/react` (live probe). Kept for 0.1 callers.
63
+ */
64
+ declare function useSponsorshipStatus(options?: GetSponsorshipStatusOptions): SponsorshipStatus;
65
+
66
+ export { type UsePepuBalanceOptions, type UsePepuBalanceResult, type UsePepuChainResult, usePepuBalance, usePepuChain, useSponsorshipStatus };
@@ -0,0 +1,66 @@
1
+ import { Address, PublicClient, Transport } from 'viem';
2
+ import { P as PepuChain } from './chains-DK13zGIp.js';
3
+ import { G as GetSponsorshipStatusOptions, c as SponsorshipStatus } from './status-Dx9zAFo9.js';
4
+ import './errors-CgX1vNj7.js';
5
+
6
+ /** Options for {@link usePepuBalance}. */
7
+ interface UsePepuBalanceOptions {
8
+ /** Address to read a balance for. The hook holds `data` at `undefined` while this is `undefined`. */
9
+ readonly address: Address | undefined;
10
+ /** ERC-20 token address to read `balanceOf` for. Omit for the native PEPU balance (`client.getBalance`). */
11
+ readonly token?: Address;
12
+ /** Re-fetch on an interval, in milliseconds. Omit (or `0`) to fetch once. */
13
+ readonly pollingInterval?: number;
14
+ }
15
+ /** Result of {@link usePepuBalance}. */
16
+ interface UsePepuBalanceResult {
17
+ /** The balance in the smallest unit (wei for native PEPU, the token's own base unit for an ERC-20), or `undefined` before the first successful fetch. */
18
+ readonly data: bigint | undefined;
19
+ readonly isLoading: boolean;
20
+ readonly error: Error | undefined;
21
+ /** Re-run the fetch immediately, outside the polling interval. */
22
+ readonly refetch: () => void;
23
+ }
24
+ /**
25
+ * Read (and optionally poll) an address's native PEPU balance, or an
26
+ * ERC-20 token balance on a PEPU chain, given a viem `PublicClient`.
27
+ *
28
+ * Deliberately takes the client as a parameter rather than reaching for one
29
+ * itself (e.g. via a context provider this package would have to define
30
+ * and ship) — this keeps the hook usable with whatever client the host app
31
+ * already has (its own `getPublicClient` call, wagmi's `usePublicClient()`,
32
+ * etc.) instead of introducing a second, competing way to obtain one.
33
+ */
34
+ declare function usePepuBalance(client: PublicClient<Transport, PepuChain>, options: UsePepuBalanceOptions): UsePepuBalanceResult;
35
+
36
+ /** Result of {@link usePepuChain}. */
37
+ interface UsePepuChainResult {
38
+ /** The matching {@link PepuChain}, or `undefined` if `chainId` isn't one of PEPU's. */
39
+ readonly chain: PepuChain | undefined;
40
+ /** `true` iff `chainId` is one of PEPU's chain ids. Equivalent to `chain !== undefined`. */
41
+ readonly isPepuChain: boolean;
42
+ }
43
+ /**
44
+ * Resolve a raw chain id (e.g. from wagmi's `useChainId()`, or an injected
45
+ * wallet's `eth_chainId`) to its {@link PepuChain} definition, if it's one
46
+ * of PEPU's. Pure lookup over {@link pepuChains} — makes no network call
47
+ * and holds no state beyond memoizing the result.
48
+ */
49
+ declare function usePepuChain(chainId: number | undefined): UsePepuChainResult;
50
+
51
+ /**
52
+ * React wrapper around {@link getSponsorshipStatus} — reports whether PEPU
53
+ * gas sponsorship is available. **Deprecated: always reports unavailable.**
54
+ * The hosted bundler and paymaster service are live and sponsorship is proven
55
+ * on mainnet, but the ERC-7677 URL embeds a project token, so availability can
56
+ * only be answered by a live probe. Use `usePepuSponsorship()` from
57
+ * `@pepu-chain/sdk/aa/react` (it wraps `checkSponsorship`) instead. This hook
58
+ * stays so 0.1 callers keep compiling.
59
+ */
60
+ /**
61
+ * @deprecated Always reports unavailable. Use `usePepuSponsorship()` from
62
+ * `@pepu-chain/sdk/aa/react` (live probe). Kept for 0.1 callers.
63
+ */
64
+ declare function useSponsorshipStatus(options?: GetSponsorshipStatusOptions): SponsorshipStatus;
65
+
66
+ export { type UsePepuBalanceOptions, type UsePepuBalanceResult, type UsePepuChainResult, usePepuBalance, usePepuChain, useSponsorshipStatus };
@@ -0,0 +1,15 @@
1
+ // Generated by scripts/guard-peers.mjs. Used only under the "node" export condition.
2
+ const peers = ["react"];
3
+ for (const peer of peers) {
4
+ try {
5
+ import.meta.resolve?.(peer);
6
+ } catch (e) {
7
+ if (e && e.code === "ERR_MODULE_NOT_FOUND") {
8
+ const err = new Error("@pepu-chain/sdk/react needs a peer package that is not installed: react. Install with: npm i react (or let create-pepu-app scaffold everything).");
9
+ err.code = "PEPU_MISSING_PEER";
10
+ throw err;
11
+ }
12
+ }
13
+ }
14
+ const mod = await import("./react.js");
15
+ export const { usePepuBalance, usePepuChain, useSponsorshipStatus } = mod;
package/dist/react.js ADDED
@@ -0,0 +1,68 @@
1
+ import { getSponsorshipStatus } from './chunk-F2R473FR.js';
2
+ import './chunk-D52PADVY.js';
3
+ import './chunk-KJYNF5KH.js';
4
+ import './chunk-XC4IBCI2.js';
5
+ import { pepuChains } from './chunk-VTQIHMF3.js';
6
+ import './chunk-6DSZ4Z2N.js';
7
+ import { useState, useCallback, useEffect, useMemo } from 'react';
8
+ import { erc20Abi } from 'viem';
9
+
10
+ function usePepuBalance(client, options) {
11
+ const { address, token, pollingInterval } = options;
12
+ const [data, setData] = useState(void 0);
13
+ const [error, setError] = useState(void 0);
14
+ const [isLoading, setIsLoading] = useState(false);
15
+ const fetchBalance = useCallback(async () => {
16
+ if (!address) {
17
+ setData(void 0);
18
+ setError(void 0);
19
+ return;
20
+ }
21
+ setIsLoading(true);
22
+ try {
23
+ const balance = token ? await client.readContract({
24
+ address: token,
25
+ abi: erc20Abi,
26
+ functionName: "balanceOf",
27
+ args: [address]
28
+ }) : await client.getBalance({ address });
29
+ setData(balance);
30
+ setError(void 0);
31
+ } catch (caught) {
32
+ setError(caught instanceof Error ? caught : new Error(String(caught)));
33
+ } finally {
34
+ setIsLoading(false);
35
+ }
36
+ }, [client, address, token]);
37
+ useEffect(() => {
38
+ void fetchBalance();
39
+ if (!pollingInterval) {
40
+ return;
41
+ }
42
+ const id = setInterval(() => {
43
+ void fetchBalance();
44
+ }, pollingInterval);
45
+ return () => clearInterval(id);
46
+ }, [fetchBalance, pollingInterval]);
47
+ const refetch = useCallback(() => {
48
+ void fetchBalance();
49
+ }, [fetchBalance]);
50
+ return { data, isLoading, error, refetch };
51
+ }
52
+ function usePepuChain(chainId) {
53
+ return useMemo(() => {
54
+ const chain = pepuChains.find((candidate) => candidate.id === chainId);
55
+ return { chain, isPepuChain: chain !== void 0 };
56
+ }, [chainId]);
57
+ }
58
+ function useSponsorshipStatus(options) {
59
+ const bundlerUrl = options?.bundlerUrl;
60
+ return useMemo(
61
+ () => getSponsorshipStatus(bundlerUrl === void 0 ? void 0 : { bundlerUrl }),
62
+ [bundlerUrl]
63
+ );
64
+ }
65
+
66
+ export { usePepuBalance, usePepuChain, useSponsorshipStatus };
67
+ //# sourceMappingURL=react.js.map
68
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/usePepuBalance.ts","../src/react/usePepuChain.ts","../src/react/useSponsorshipStatus.ts"],"names":["useMemo"],"mappings":";;;;;;;;;AAoCO,SAAS,cAAA,CACd,QACA,OAAA,EACsB;AACtB,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAO,eAAA,EAAgB,GAAI,OAAA;AAC5C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAA6B,MAAS,CAAA;AAC9D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAA4B,MAAS,CAAA;AAC/D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAEhD,EAAA,MAAM,YAAA,GAAe,YAAY,YAAY;AAC3C,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAA,CAAQ,MAAS,CAAA;AACjB,MAAA,QAAA,CAAS,MAAS,CAAA;AAClB,MAAA;AAAA,IACF;AACA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,KAAA,GACZ,MAAM,MAAA,CAAO,YAAA,CAAa;AAAA,QACxB,OAAA,EAAS,KAAA;AAAA,QACT,GAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,OAAO;AAAA,OACf,CAAA,GACD,MAAM,OAAO,UAAA,CAAW,EAAE,SAAS,CAAA;AACvC,MAAA,OAAA,CAAQ,OAAO,CAAA;AACf,MAAA,QAAA,CAAS,KAAA,CAAS,CAAA;AAAA,IACpB,SAAS,MAAA,EAAQ;AACf,MAAA,QAAA,CAAS,MAAA,YAAkB,QAAQ,MAAA,GAAS,IAAI,MAAM,MAAA,CAAO,MAAM,CAAC,CAAC,CAAA;AAAA,IACvE,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAA,EAAS,KAAK,CAAC,CAAA;AAE3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,KAAK,YAAA,EAAa;AAClB,IAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAA,GAAK,YAAY,MAAM;AAC3B,MAAA,KAAK,YAAA,EAAa;AAAA,IACpB,GAAG,eAAe,CAAA;AAClB,IAAA,OAAO,MAAM,cAAc,EAAE,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,YAAA,EAAc,eAAe,CAAC,CAAA;AAElC,EAAA,MAAM,OAAA,GAAU,YAAY,MAAM;AAChC,IAAA,KAAK,YAAA,EAAa;AAAA,EACpB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,OAAA,EAAQ;AAC3C;ACnEO,SAAS,aAAa,OAAA,EAAiD;AAC5E,EAAA,OAAO,QAAQ,MAAM;AACnB,IAAA,MAAM,QAAQ,UAAA,CAAW,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,OAAO,CAAA;AACrE,IAAA,OAAO,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,KAAU,MAAA,EAAU;AAAA,EACnD,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACd;ACNO,SAAS,qBACd,OAAA,EACmB;AACnB,EAAA,MAAM,aAAa,OAAA,EAAS,UAAA;AAC5B,EAAA,OAAOA,OAAAA;AAAA,IACL,MAAM,oBAAA,CAAqB,UAAA,KAAe,SAAY,MAAA,GAAY,EAAE,YAAY,CAAA;AAAA,IAChF,CAAC,UAAU;AAAA,GACb;AACF","file":"react.js","sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { erc20Abi } from \"viem\";\nimport type { Address, PublicClient, Transport } from \"viem\";\n\nimport type { PepuChain } from \"../chains.js\";\n\n/** Options for {@link usePepuBalance}. */\nexport interface UsePepuBalanceOptions {\n /** Address to read a balance for. The hook holds `data` at `undefined` while this is `undefined`. */\n readonly address: Address | undefined;\n /** ERC-20 token address to read `balanceOf` for. Omit for the native PEPU balance (`client.getBalance`). */\n readonly token?: Address;\n /** Re-fetch on an interval, in milliseconds. Omit (or `0`) to fetch once. */\n readonly pollingInterval?: number;\n}\n\n/** Result of {@link usePepuBalance}. */\nexport interface UsePepuBalanceResult {\n /** The balance in the smallest unit (wei for native PEPU, the token's own base unit for an ERC-20), or `undefined` before the first successful fetch. */\n readonly data: bigint | undefined;\n readonly isLoading: boolean;\n readonly error: Error | undefined;\n /** Re-run the fetch immediately, outside the polling interval. */\n readonly refetch: () => void;\n}\n\n/**\n * Read (and optionally poll) an address's native PEPU balance, or an\n * ERC-20 token balance on a PEPU chain, given a viem `PublicClient`.\n *\n * Deliberately takes the client as a parameter rather than reaching for one\n * itself (e.g. via a context provider this package would have to define\n * and ship) — this keeps the hook usable with whatever client the host app\n * already has (its own `getPublicClient` call, wagmi's `usePublicClient()`,\n * etc.) instead of introducing a second, competing way to obtain one.\n */\nexport function usePepuBalance(\n client: PublicClient<Transport, PepuChain>,\n options: UsePepuBalanceOptions,\n): UsePepuBalanceResult {\n const { address, token, pollingInterval } = options;\n const [data, setData] = useState<bigint | undefined>(undefined);\n const [error, setError] = useState<Error | undefined>(undefined);\n const [isLoading, setIsLoading] = useState(false);\n\n const fetchBalance = useCallback(async () => {\n if (!address) {\n setData(undefined);\n setError(undefined);\n return;\n }\n setIsLoading(true);\n try {\n const balance = token\n ? await client.readContract({\n address: token,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [address],\n })\n : await client.getBalance({ address });\n setData(balance);\n setError(undefined);\n } catch (caught) {\n setError(caught instanceof Error ? caught : new Error(String(caught)));\n } finally {\n setIsLoading(false);\n }\n }, [client, address, token]);\n\n useEffect(() => {\n void fetchBalance();\n if (!pollingInterval) {\n return;\n }\n const id = setInterval(() => {\n void fetchBalance();\n }, pollingInterval);\n return () => clearInterval(id);\n }, [fetchBalance, pollingInterval]);\n\n const refetch = useCallback(() => {\n void fetchBalance();\n }, [fetchBalance]);\n\n return { data, isLoading, error, refetch };\n}\n","import { useMemo } from \"react\";\n\nimport { pepuChains } from \"../chains.js\";\nimport type { PepuChain } from \"../chains.js\";\n\n/** Result of {@link usePepuChain}. */\nexport interface UsePepuChainResult {\n /** The matching {@link PepuChain}, or `undefined` if `chainId` isn't one of PEPU's. */\n readonly chain: PepuChain | undefined;\n /** `true` iff `chainId` is one of PEPU's chain ids. Equivalent to `chain !== undefined`. */\n readonly isPepuChain: boolean;\n}\n\n/**\n * Resolve a raw chain id (e.g. from wagmi's `useChainId()`, or an injected\n * wallet's `eth_chainId`) to its {@link PepuChain} definition, if it's one\n * of PEPU's. Pure lookup over {@link pepuChains} — makes no network call\n * and holds no state beyond memoizing the result.\n */\nexport function usePepuChain(chainId: number | undefined): UsePepuChainResult {\n return useMemo(() => {\n const chain = pepuChains.find((candidate) => candidate.id === chainId);\n return { chain, isPepuChain: chain !== undefined };\n }, [chainId]);\n}\n","import { useMemo } from \"react\";\n\nimport { getSponsorshipStatus } from \"../aa/status.js\";\nimport type { GetSponsorshipStatusOptions, SponsorshipStatus } from \"../aa/status.js\";\n\n/**\n * React wrapper around {@link getSponsorshipStatus} — reports whether PEPU\n * gas sponsorship is available. **Deprecated: always reports unavailable.**\n * The hosted bundler and paymaster service are live and sponsorship is proven\n * on mainnet, but the ERC-7677 URL embeds a project token, so availability can\n * only be answered by a live probe. Use `usePepuSponsorship()` from\n * `@pepu-chain/sdk/aa/react` (it wraps `checkSponsorship`) instead. This hook\n * stays so 0.1 callers keep compiling.\n */\n/**\n * @deprecated Always reports unavailable. Use `usePepuSponsorship()` from\n * `@pepu-chain/sdk/aa/react` (live probe). Kept for 0.1 callers.\n */\nexport function useSponsorshipStatus(\n options?: GetSponsorshipStatusOptions,\n): SponsorshipStatus {\n const bundlerUrl = options?.bundlerUrl;\n return useMemo(\n () => getSponsorshipStatus(bundlerUrl === undefined ? undefined : { bundlerUrl }),\n [bundlerUrl],\n );\n}\n"]}