@pepu-chain/sdk 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +565 -2
- package/dist/aa/kernel.cjs +40 -0
- package/dist/aa/kernel.cjs.map +1 -0
- package/dist/aa/kernel.d.cts +88 -0
- package/dist/aa/kernel.d.ts +88 -0
- package/dist/aa/kernel.js +11 -0
- package/dist/aa/kernel.js.map +1 -0
- package/dist/aa/react-direct.cjs +110 -0
- package/dist/aa/react-direct.cjs.map +1 -0
- package/dist/aa/react-direct.d.cts +42 -0
- package/dist/aa/react-direct.d.ts +42 -0
- package/dist/aa/react-direct.js +107 -0
- package/dist/aa/react-direct.js.map +1 -0
- package/dist/aa/react.cjs +151 -0
- package/dist/aa/react.cjs.map +1 -0
- package/dist/aa/react.d.cts +62 -0
- package/dist/aa/react.d.ts +62 -0
- package/dist/aa/react.js +147 -0
- package/dist/aa/react.js.map +1 -0
- package/dist/aa.cjs +84 -0
- package/dist/aa.cjs.map +1 -0
- package/dist/aa.d.cts +85 -0
- package/dist/aa.d.ts +85 -0
- package/dist/aa.js +11 -0
- package/dist/aa.js.map +1 -0
- package/dist/api-Dz4sCHH_.d.cts +654 -0
- package/dist/api-Dz4sCHH_.d.ts +654 -0
- package/dist/calls-BRPjKgjl.d.cts +70 -0
- package/dist/calls-z_EQOtFb.d.ts +70 -0
- package/dist/chains-DK13zGIp.d.cts +235 -0
- package/dist/chains-DK13zGIp.d.ts +235 -0
- package/dist/chunk-3XUGQODR.js +194 -0
- package/dist/chunk-3XUGQODR.js.map +1 -0
- package/dist/chunk-45KSZH26.cjs +145 -0
- package/dist/chunk-45KSZH26.cjs.map +1 -0
- package/dist/chunk-4GINFJO6.cjs +44 -0
- package/dist/chunk-4GINFJO6.cjs.map +1 -0
- package/dist/chunk-62M2LKQW.js +136 -0
- package/dist/chunk-62M2LKQW.js.map +1 -0
- package/dist/chunk-6DSZ4Z2N.js +498 -0
- package/dist/chunk-6DSZ4Z2N.js.map +1 -0
- package/dist/chunk-7MNJF2OB.cjs +72 -0
- package/dist/chunk-7MNJF2OB.cjs.map +1 -0
- package/dist/chunk-A5LP2UCS.cjs +2729 -0
- package/dist/chunk-A5LP2UCS.cjs.map +1 -0
- package/dist/chunk-AJS4UFQX.cjs +121 -0
- package/dist/chunk-AJS4UFQX.cjs.map +1 -0
- package/dist/chunk-C2XW44FI.cjs +200 -0
- package/dist/chunk-C2XW44FI.cjs.map +1 -0
- package/dist/chunk-C7IC36XS.cjs +13 -0
- package/dist/chunk-C7IC36XS.cjs.map +1 -0
- package/dist/chunk-D52PADVY.js +84 -0
- package/dist/chunk-D52PADVY.js.map +1 -0
- package/dist/chunk-DH6BFNVJ.cjs +272 -0
- package/dist/chunk-DH6BFNVJ.cjs.map +1 -0
- package/dist/chunk-DPCZJLB3.cjs +87 -0
- package/dist/chunk-DPCZJLB3.cjs.map +1 -0
- package/dist/chunk-EHBPIYY4.js +262 -0
- package/dist/chunk-EHBPIYY4.js.map +1 -0
- package/dist/chunk-ESMNAXUI.js +86 -0
- package/dist/chunk-ESMNAXUI.js.map +1 -0
- package/dist/chunk-ET3P6TX6.cjs +49 -0
- package/dist/chunk-ET3P6TX6.cjs.map +1 -0
- package/dist/chunk-FCXSP2YF.js +219 -0
- package/dist/chunk-FCXSP2YF.js.map +1 -0
- package/dist/chunk-IB2FSPMJ.js +66 -0
- package/dist/chunk-IB2FSPMJ.js.map +1 -0
- package/dist/chunk-IG7RSL2Y.cjs +178 -0
- package/dist/chunk-IG7RSL2Y.cjs.map +1 -0
- package/dist/chunk-IY3ALPUJ.js +2716 -0
- package/dist/chunk-IY3ALPUJ.js.map +1 -0
- package/dist/chunk-J3O2ZGG3.cjs +93 -0
- package/dist/chunk-J3O2ZGG3.cjs.map +1 -0
- package/dist/chunk-J6UXXHBE.js +37 -0
- package/dist/chunk-J6UXXHBE.js.map +1 -0
- package/dist/chunk-JLZ4LZ4Z.js +22 -0
- package/dist/chunk-JLZ4LZ4Z.js.map +1 -0
- package/dist/chunk-KIIFL4VM.js +274 -0
- package/dist/chunk-KIIFL4VM.js.map +1 -0
- package/dist/chunk-KVG3AYYR.js +99 -0
- package/dist/chunk-KVG3AYYR.js.map +1 -0
- package/dist/chunk-MBA4CLA5.js +45 -0
- package/dist/chunk-MBA4CLA5.js.map +1 -0
- package/dist/chunk-NE3QKDOB.cjs +24 -0
- package/dist/chunk-NE3QKDOB.cjs.map +1 -0
- package/dist/chunk-NVOPDXTA.cjs +95 -0
- package/dist/chunk-NVOPDXTA.cjs.map +1 -0
- package/dist/chunk-OH3QMAIB.js +11 -0
- package/dist/chunk-OH3QMAIB.js.map +1 -0
- package/dist/chunk-PHM3ZORG.cjs +110 -0
- package/dist/chunk-PHM3ZORG.cjs.map +1 -0
- package/dist/chunk-R5PXQNO3.cjs +209 -0
- package/dist/chunk-R5PXQNO3.cjs.map +1 -0
- package/dist/chunk-SLW7FRTL.cjs +285 -0
- package/dist/chunk-SLW7FRTL.cjs.map +1 -0
- package/dist/chunk-SVWRRALU.cjs +17 -0
- package/dist/chunk-SVWRRALU.cjs.map +1 -0
- package/dist/chunk-T43PQXJD.js +202 -0
- package/dist/chunk-T43PQXJD.js.map +1 -0
- package/dist/chunk-TIEAZYHF.cjs +225 -0
- package/dist/chunk-TIEAZYHF.cjs.map +1 -0
- package/dist/chunk-VBH3JLQ5.js +116 -0
- package/dist/chunk-VBH3JLQ5.js.map +1 -0
- package/dist/chunk-VF3D6KLQ.cjs +94 -0
- package/dist/chunk-VF3D6KLQ.cjs.map +1 -0
- package/dist/chunk-VTQIHMF3.js +82 -0
- package/dist/chunk-VTQIHMF3.js.map +1 -0
- package/dist/chunk-W3JN3YIW.js +15 -0
- package/dist/chunk-W3JN3YIW.js.map +1 -0
- package/dist/chunk-WANILJZQ.cjs +87 -0
- package/dist/chunk-WANILJZQ.cjs.map +1 -0
- package/dist/chunk-XC4IBCI2.js +86 -0
- package/dist/chunk-XC4IBCI2.js.map +1 -0
- package/dist/chunk-YKEWWQEJ.js +165 -0
- package/dist/chunk-YKEWWQEJ.js.map +1 -0
- package/dist/chunk-YQL7NISX.cjs +515 -0
- package/dist/chunk-YQL7NISX.cjs.map +1 -0
- package/dist/chunk-ZB6SVBK4.js +89 -0
- package/dist/chunk-ZB6SVBK4.js.map +1 -0
- package/dist/combo/react.cjs +235 -0
- package/dist/combo/react.cjs.map +1 -0
- package/dist/combo/react.d.cts +148 -0
- package/dist/combo/react.d.ts +148 -0
- package/dist/combo/react.js +230 -0
- package/dist/combo/react.js.map +1 -0
- package/dist/combo.cjs +262 -0
- package/dist/combo.cjs.map +1 -0
- package/dist/combo.d.cts +139 -0
- package/dist/combo.d.ts +139 -0
- package/dist/combo.js +249 -0
- package/dist/combo.js.map +1 -0
- package/dist/config-CHjz7ZjZ.d.cts +57 -0
- package/dist/config-COjhIZTh.d.ts +57 -0
- package/dist/doctor.cjs +354 -0
- package/dist/doctor.cjs.map +1 -0
- package/dist/doctor.d.cts +177 -0
- package/dist/doctor.d.ts +177 -0
- package/dist/doctor.js +345 -0
- package/dist/doctor.js.map +1 -0
- package/dist/erc7677-DOW58QBE.d.cts +111 -0
- package/dist/erc7677-DOW58QBE.d.ts +111 -0
- package/dist/errors-CgX1vNj7.d.cts +100 -0
- package/dist/errors-CgX1vNj7.d.ts +100 -0
- package/dist/index.cjs +802 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2398 -0
- package/dist/index.d.ts +2398 -0
- package/dist/index.js +559 -0
- package/dist/index.js.map +1 -0
- package/dist/paymaster/server.cjs +38 -0
- package/dist/paymaster/server.cjs.map +1 -0
- package/dist/paymaster/server.d.cts +57 -0
- package/dist/paymaster/server.d.ts +57 -0
- package/dist/paymaster/server.js +36 -0
- package/dist/paymaster/server.js.map +1 -0
- package/dist/paymaster.cjs +356 -0
- package/dist/paymaster.cjs.map +1 -0
- package/dist/paymaster.d.cts +1851 -0
- package/dist/paymaster.d.ts +1851 -0
- package/dist/paymaster.js +289 -0
- package/dist/paymaster.js.map +1 -0
- package/dist/privy/react.cjs +48 -0
- package/dist/privy/react.cjs.map +1 -0
- package/dist/privy/react.d.cts +194 -0
- package/dist/privy/react.d.ts +194 -0
- package/dist/privy/react.js +7 -0
- package/dist/privy/react.js.map +1 -0
- package/dist/privy/server.cjs +43 -0
- package/dist/privy/server.cjs.map +1 -0
- package/dist/privy/server.d.cts +192 -0
- package/dist/privy/server.d.ts +192 -0
- package/dist/privy/server.js +6 -0
- package/dist/privy/server.js.map +1 -0
- package/dist/privy/wagmi.d.ts +90 -0
- package/dist/privy/wagmi.js +55 -0
- package/dist/privy/wagmi.js.map +1 -0
- package/dist/privy.cjs +34 -0
- package/dist/privy.cjs.map +1 -0
- package/dist/privy.d.cts +4 -0
- package/dist/privy.d.ts +4 -0
- package/dist/privy.js +5 -0
- package/dist/privy.js.map +1 -0
- package/dist/react.cjs +72 -0
- package/dist/react.cjs.map +1 -0
- package/dist/react.d.cts +66 -0
- package/dist/react.d.ts +66 -0
- package/dist/react.js +68 -0
- package/dist/react.js.map +1 -0
- package/dist/requirements-C-QiJkL9.d.cts +134 -0
- package/dist/requirements-C-QiJkL9.d.ts +134 -0
- package/dist/scope-DBRkN7bR.d.cts +94 -0
- package/dist/scope-DBRkN7bR.d.ts +94 -0
- package/dist/server.cjs +59 -0
- package/dist/server.cjs.map +1 -0
- package/dist/server.d.cts +208 -0
- package/dist/server.d.ts +208 -0
- package/dist/server.js +8 -0
- package/dist/server.js.map +1 -0
- package/dist/session/kernel.cjs +82 -0
- package/dist/session/kernel.cjs.map +1 -0
- package/dist/session/kernel.d.cts +131 -0
- package/dist/session/kernel.d.ts +131 -0
- package/dist/session/kernel.js +13 -0
- package/dist/session/kernel.js.map +1 -0
- package/dist/session/react.cjs +37 -0
- package/dist/session/react.cjs.map +1 -0
- package/dist/session/react.d.cts +119 -0
- package/dist/session/react.d.ts +119 -0
- package/dist/session/react.js +8 -0
- package/dist/session/react.js.map +1 -0
- package/dist/session/server.cjs +267 -0
- package/dist/session/server.cjs.map +1 -0
- package/dist/session/server.d.cts +151 -0
- package/dist/session/server.d.ts +151 -0
- package/dist/session/server.js +252 -0
- package/dist/session/server.js.map +1 -0
- package/dist/session.cjs +74 -0
- package/dist/session.cjs.map +1 -0
- package/dist/session.d.cts +3 -0
- package/dist/session.d.ts +3 -0
- package/dist/session.js +5 -0
- package/dist/session.js.map +1 -0
- package/dist/status-CmOsyPmO.d.cts +295 -0
- package/dist/status-DwkkOrGQ.d.ts +295 -0
- package/dist/store-CjmLgp9g.d.cts +64 -0
- package/dist/store-CjmLgp9g.d.ts +64 -0
- package/dist/types-BEEM7WdG.d.cts +25 -0
- package/dist/types-BEEM7WdG.d.ts +25 -0
- package/dist/types-BilBTDqK.d.cts +27 -0
- package/dist/types-BilBTDqK.d.ts +27 -0
- package/package.json +209 -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,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"}
|
package/dist/privy.d.cts
ADDED
|
@@ -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';
|
package/dist/privy.d.ts
ADDED
|
@@ -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,72 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkSLW7FRTL_cjs = require('./chunk-SLW7FRTL.cjs');
|
|
4
|
+
require('./chunk-WANILJZQ.cjs');
|
|
5
|
+
require('./chunk-TIEAZYHF.cjs');
|
|
6
|
+
require('./chunk-VF3D6KLQ.cjs');
|
|
7
|
+
var chunkDPCZJLB3_cjs = require('./chunk-DPCZJLB3.cjs');
|
|
8
|
+
require('./chunk-YQL7NISX.cjs');
|
|
9
|
+
var react = require('react');
|
|
10
|
+
var viem = require('viem');
|
|
11
|
+
|
|
12
|
+
function usePepuBalance(client, options) {
|
|
13
|
+
const { address, token, pollingInterval } = options;
|
|
14
|
+
const [data, setData] = react.useState(void 0);
|
|
15
|
+
const [error, setError] = react.useState(void 0);
|
|
16
|
+
const [isLoading, setIsLoading] = react.useState(false);
|
|
17
|
+
const fetchBalance = react.useCallback(async () => {
|
|
18
|
+
if (!address) {
|
|
19
|
+
setData(void 0);
|
|
20
|
+
setError(void 0);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
setIsLoading(true);
|
|
24
|
+
try {
|
|
25
|
+
const balance = token ? await client.readContract({
|
|
26
|
+
address: token,
|
|
27
|
+
abi: viem.erc20Abi,
|
|
28
|
+
functionName: "balanceOf",
|
|
29
|
+
args: [address]
|
|
30
|
+
}) : await client.getBalance({ address });
|
|
31
|
+
setData(balance);
|
|
32
|
+
setError(void 0);
|
|
33
|
+
} catch (caught) {
|
|
34
|
+
setError(caught instanceof Error ? caught : new Error(String(caught)));
|
|
35
|
+
} finally {
|
|
36
|
+
setIsLoading(false);
|
|
37
|
+
}
|
|
38
|
+
}, [client, address, token]);
|
|
39
|
+
react.useEffect(() => {
|
|
40
|
+
void fetchBalance();
|
|
41
|
+
if (!pollingInterval) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const id = setInterval(() => {
|
|
45
|
+
void fetchBalance();
|
|
46
|
+
}, pollingInterval);
|
|
47
|
+
return () => clearInterval(id);
|
|
48
|
+
}, [fetchBalance, pollingInterval]);
|
|
49
|
+
const refetch = react.useCallback(() => {
|
|
50
|
+
void fetchBalance();
|
|
51
|
+
}, [fetchBalance]);
|
|
52
|
+
return { data, isLoading, error, refetch };
|
|
53
|
+
}
|
|
54
|
+
function usePepuChain(chainId) {
|
|
55
|
+
return react.useMemo(() => {
|
|
56
|
+
const chain = chunkDPCZJLB3_cjs.pepuChains.find((candidate) => candidate.id === chainId);
|
|
57
|
+
return { chain, isPepuChain: chain !== void 0 };
|
|
58
|
+
}, [chainId]);
|
|
59
|
+
}
|
|
60
|
+
function useSponsorshipStatus(options) {
|
|
61
|
+
const bundlerUrl = options?.bundlerUrl;
|
|
62
|
+
return react.useMemo(
|
|
63
|
+
() => chunkSLW7FRTL_cjs.getSponsorshipStatus(bundlerUrl === void 0 ? void 0 : { bundlerUrl }),
|
|
64
|
+
[bundlerUrl]
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
exports.usePepuBalance = usePepuBalance;
|
|
69
|
+
exports.usePepuChain = usePepuChain;
|
|
70
|
+
exports.useSponsorshipStatus = useSponsorshipStatus;
|
|
71
|
+
//# sourceMappingURL=react.cjs.map
|
|
72
|
+
//# 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"]}
|
package/dist/react.d.cts
ADDED
|
@@ -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-CmOsyPmO.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 };
|
package/dist/react.d.ts
ADDED
|
@@ -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-DwkkOrGQ.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 };
|
package/dist/react.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { getSponsorshipStatus } from './chunk-KIIFL4VM.js';
|
|
2
|
+
import './chunk-D52PADVY.js';
|
|
3
|
+
import './chunk-FCXSP2YF.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"]}
|