@renown/sdk 6.2.2-dev.9 → 6.2.2

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 (75) hide show
  1. package/README.md +162 -1
  2. package/dist/{browser-key-storage-v4O-fjz0.js → browser-key-storage-e3RQsnLS.js} +1 -1
  3. package/dist/{browser-key-storage-v4O-fjz0.js.map → browser-key-storage-e3RQsnLS.js.map} +1 -1
  4. package/dist/constants-BexAR53F.js +82 -0
  5. package/dist/constants-BexAR53F.js.map +1 -0
  6. package/dist/crypto.d.ts +2 -2
  7. package/dist/crypto.js +2 -2
  8. package/dist/index-BLIpkdF7.d.ts +131 -0
  9. package/dist/index-BLIpkdF7.d.ts.map +1 -0
  10. package/dist/index.d.ts +11 -8
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +21 -9
  13. package/dist/index.js.map +1 -1
  14. package/dist/local-credential-verifier-CU8hmFlR.js +907 -0
  15. package/dist/local-credential-verifier-CU8hmFlR.js.map +1 -0
  16. package/dist/meta-BesJP74N.d.ts +19 -0
  17. package/dist/meta-BesJP74N.d.ts.map +1 -0
  18. package/dist/meta-CHgd9Qd0.js +31 -0
  19. package/dist/meta-CHgd9Qd0.js.map +1 -0
  20. package/dist/meta-D-5kvwx8.js +27 -0
  21. package/dist/meta-D-5kvwx8.js.map +1 -0
  22. package/dist/meta-bV7L-1yb.d.ts +19 -0
  23. package/dist/meta-bV7L-1yb.d.ts.map +1 -0
  24. package/dist/node.d.ts +11 -11
  25. package/dist/node.d.ts.map +1 -1
  26. package/dist/node.js +104 -12
  27. package/dist/node.js.map +1 -1
  28. package/dist/{signer-CgYhXTV7.js → signer-DrjINLqt.js} +13 -6
  29. package/dist/signer-DrjINLqt.js.map +1 -0
  30. package/dist/{signer-DYKGoYHB.d.ts → types-BGQKPoUr.d.ts} +170 -118
  31. package/dist/types-BGQKPoUr.d.ts.map +1 -0
  32. package/dist/types-C-hJrsQg.d.ts +59 -0
  33. package/dist/types-C-hJrsQg.d.ts.map +1 -0
  34. package/dist/types-C_qc_62W.js +20 -0
  35. package/dist/types-C_qc_62W.js.map +1 -0
  36. package/dist/types-DInveFLz.d.ts +63 -0
  37. package/dist/types-DInveFLz.d.ts.map +1 -0
  38. package/dist/{utils-C9ZgMs_C.d.ts → utils-DtWREYeO.d.ts} +81 -94
  39. package/dist/utils-DtWREYeO.d.ts.map +1 -0
  40. package/dist/wallet/index.d.ts +8 -0
  41. package/dist/wallet/index.d.ts.map +1 -0
  42. package/dist/wallet/index.js +30 -0
  43. package/dist/wallet/index.js.map +1 -0
  44. package/dist/wallet/mock/factory.d.ts +9 -0
  45. package/dist/wallet/mock/factory.d.ts.map +1 -0
  46. package/dist/wallet/mock/factory.js +35 -0
  47. package/dist/wallet/mock/factory.js.map +1 -0
  48. package/dist/wallet/mock/index.d.ts +9 -0
  49. package/dist/wallet/mock/index.d.ts.map +1 -0
  50. package/dist/wallet/mock/index.js +16 -0
  51. package/dist/wallet/mock/index.js.map +1 -0
  52. package/dist/wallet/privy/factory.d.ts +79 -0
  53. package/dist/wallet/privy/factory.d.ts.map +1 -0
  54. package/dist/wallet/privy/factory.js +382 -0
  55. package/dist/wallet/privy/factory.js.map +1 -0
  56. package/dist/wallet/privy/index.d.ts +9 -0
  57. package/dist/wallet/privy/index.d.ts.map +1 -0
  58. package/dist/wallet/privy/index.js +16 -0
  59. package/dist/wallet/privy/index.js.map +1 -0
  60. package/dist/wallet/rainbow/factory.d.ts +7 -0
  61. package/dist/wallet/rainbow/factory.d.ts.map +1 -0
  62. package/dist/wallet/rainbow/factory.js +219 -0
  63. package/dist/wallet/rainbow/factory.js.map +1 -0
  64. package/dist/wallet/rainbow/index.d.ts +9 -0
  65. package/dist/wallet/rainbow/index.d.ts.map +1 -0
  66. package/dist/wallet/rainbow/index.js +21 -0
  67. package/dist/wallet/rainbow/index.js.map +1 -0
  68. package/package.json +77 -4
  69. package/dist/browser-key-storage-DSkDBAhU.d.ts +0 -14
  70. package/dist/browser-key-storage-DSkDBAhU.d.ts.map +0 -1
  71. package/dist/renown-builder-Sn_Y2Cb2.js +0 -496
  72. package/dist/renown-builder-Sn_Y2Cb2.js.map +0 -1
  73. package/dist/signer-CgYhXTV7.js.map +0 -1
  74. package/dist/signer-DYKGoYHB.d.ts.map +0 -1
  75. package/dist/utils-C9ZgMs_C.d.ts.map +0 -1
@@ -0,0 +1,59 @@
1
+ import { at as SignCredentialTypedData } from "./types-BGQKPoUr.js";
2
+ import { ComponentType, ReactNode } from "react";
3
+
4
+ //#region src/wallet/types.d.ts
5
+ declare const LoginMethod: {
6
+ readonly WALLET: "wallet";
7
+ readonly GOOGLE: "google";
8
+ readonly EMAIL: "email";
9
+ readonly APPLE: "apple";
10
+ };
11
+ type LoginMethod = (typeof LoginMethod)[keyof typeof LoginMethod];
12
+ interface WalletThemeColors {
13
+ accentColor?: string;
14
+ accentColorForeground?: string;
15
+ }
16
+ type WalletTheme = "light" | "dark" | ({
17
+ mode: "light" | "dark";
18
+ } & WalletThemeColors);
19
+ declare function normalizeWalletTheme(theme: WalletTheme | undefined): {
20
+ mode: "light" | "dark";
21
+ accentColor?: string;
22
+ accentColorForeground?: string;
23
+ };
24
+ interface WalletSession {
25
+ address: `0x${string}`;
26
+ chainId: number;
27
+ signTypedData: SignCredentialTypedData;
28
+ canSignSilently?: boolean;
29
+ }
30
+ interface WalletController {
31
+ connect(method?: LoginMethod): Promise<WalletSession>;
32
+ disconnect(): Promise<void>;
33
+ getSession(): WalletSession | undefined;
34
+ subscribe?(listener: (session: WalletSession | undefined) => void): () => void;
35
+ }
36
+ interface WalletAdapterMeta {
37
+ id: string;
38
+ redirectReturnParams: string[];
39
+ supportedMethods: LoginMethod[];
40
+ }
41
+ interface WalletAdapterImpl {
42
+ Provider: ComponentType<{
43
+ children: ReactNode;
44
+ theme?: WalletTheme;
45
+ }>;
46
+ useController: () => WalletController;
47
+ }
48
+ interface WalletAdapter extends WalletAdapterImpl {
49
+ meta: WalletAdapterMeta;
50
+ }
51
+ interface WalletAdapterDescriptor {
52
+ meta: WalletAdapterMeta;
53
+ load: () => Promise<WalletAdapterImpl>;
54
+ }
55
+ type WalletAdapterFactory<Config = unknown> = (config: Config) => WalletAdapterImpl;
56
+ type WalletAdapterProvider<Config = unknown> = (config: Config) => WalletAdapterDescriptor;
57
+ //#endregion
58
+ export { WalletAdapterImpl as a, WalletController as c, WalletThemeColors as d, normalizeWalletTheme as f, WalletAdapterFactory as i, WalletSession as l, WalletAdapter as n, WalletAdapterMeta as o, WalletAdapterDescriptor as r, WalletAdapterProvider as s, LoginMethod as t, WalletTheme as u };
59
+ //# sourceMappingURL=types-C-hJrsQg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-C-hJrsQg.d.ts","names":[],"sources":["../src/wallet/types.ts"],"mappings":";;;;cAKa,WAAA;EAAA;;;;;KAOD,WAAA,WAAsB,WAAA,eAA0B,WAAA;AAAA,UAI3C,iBAAA;EACf,WAAA;EACA,qBAAA;AAAA;AAAA,KAIU,WAAA;EAGL,IAAA;AAAA,IAA2B,iBAAA;AAAA,iBAGlB,oBAAA,CAAqB,KAAA,EAAO,WAAA;EAC1C,IAAA;EACA,WAAA;EACA,qBAAA;AAAA;AAAA,UAYe,aAAA;EACf,OAAA;EACA,OAAA;EACA,aAAA,EAAe,uBAAA;EAGf,eAAA;AAAA;AAAA,UAIe,gBAAA;EACf,OAAA,CAAQ,MAAA,GAAS,WAAA,GAAc,OAAA,CAAQ,aAAA;EACvC,UAAA,IAAc,OAAA;EACd,UAAA,IAAc,aAAA;EAGd,SAAA,EACE,QAAA,GAAW,OAAA,EAAS,aAAA;AAAA;AAAA,UAMP,iBAAA;EACf,EAAA;EAGA,oBAAA;EAGA,gBAAA,EAAkB,WAAA;AAAA;AAAA,UAIH,iBAAA;EAGf,QAAA,EAAU,aAAA;IAAgB,QAAA,EAAU,SAAA;IAAW,KAAA,GAAQ,WAAA;EAAA;EAEvD,aAAA,QAAqB,gBAAA;AAAA;AAAA,UAIN,aAAA,SAAsB,iBAAA;EACrC,IAAA,EAAM,iBAAA;AAAA;AAAA,UAKS,uBAAA;EACf,IAAA,EAAM,iBAAA;EACN,IAAA,QAAY,OAAA,CAAQ,iBAAA;AAAA;AAAA,KAGV,oBAAA,sBACV,MAAA,EAAQ,MAAA,KACL,iBAAA;AAAA,KAEO,qBAAA,sBACV,MAAA,EAAQ,MAAA,KACL,uBAAA"}
@@ -0,0 +1,20 @@
1
+ //#region src/wallet/types.ts
2
+ const LoginMethod = {
3
+ WALLET: "wallet",
4
+ GOOGLE: "google",
5
+ EMAIL: "email",
6
+ APPLE: "apple"
7
+ };
8
+ function normalizeWalletTheme(theme) {
9
+ if (theme === void 0) return { mode: "light" };
10
+ if (typeof theme === "string") return { mode: theme };
11
+ return {
12
+ mode: theme.mode,
13
+ accentColor: theme.accentColor,
14
+ accentColorForeground: theme.accentColorForeground
15
+ };
16
+ }
17
+ //#endregion
18
+ export { normalizeWalletTheme as n, LoginMethod as t };
19
+
20
+ //# sourceMappingURL=types-C_qc_62W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-C_qc_62W.js","names":[],"sources":["../src/wallet/types.ts"],"sourcesContent":["import type { ComponentType, ReactNode } from \"react\";\nimport type { SignCredentialTypedData } from \"../credential.js\";\n\n// Const object rather than an enum so config can be authored with plain string\n// literals (`methods: [\"google\"]`) while `LoginMethod.GOOGLE` still works.\nexport const LoginMethod = {\n WALLET: \"wallet\",\n GOOGLE: \"google\",\n EMAIL: \"email\",\n APPLE: \"apple\",\n} as const;\n\nexport type LoginMethod = (typeof LoginMethod)[keyof typeof LoginMethod];\n\n// Colors the host passes into an adapter Provider so its wallet UI matches.\n// The adapter stays agnostic to how the host derives them (CSS tokens, etc.).\nexport interface WalletThemeColors {\n accentColor?: string;\n accentColorForeground?: string;\n}\n\n// The theme the host passes at runtime: a bare mode, or a mode plus colors.\nexport type WalletTheme =\n | \"light\"\n | \"dark\"\n | ({ mode: \"light\" | \"dark\" } & WalletThemeColors);\n\n// Normalize a WalletTheme (or undefined) to a mode + colors the adapters use.\nexport function normalizeWalletTheme(theme: WalletTheme | undefined): {\n mode: \"light\" | \"dark\";\n accentColor?: string;\n accentColorForeground?: string;\n} {\n if (theme === undefined) return { mode: \"light\" };\n if (typeof theme === \"string\") return { mode: theme };\n return {\n mode: theme.mode,\n accentColor: theme.accentColor,\n accentColorForeground: theme.accentColorForeground,\n };\n}\n\n// The signer surface signIn needs, produced by an adapter after the user connects.\nexport interface WalletSession {\n address: `0x${string}`;\n chainId: number;\n signTypedData: SignCredentialTypedData;\n // Capability, not policy: the session can sign without a user prompt (e.g. a\n // Privy embedded wallet). Whether/when to sign silently is the host's call.\n canSignSilently?: boolean;\n}\n\n// Imperative controls returned by an adapter's React hook (used inside its Provider).\nexport interface WalletController {\n connect(method?: LoginMethod): Promise<WalletSession>;\n disconnect(): Promise<void>;\n getSession(): WalletSession | undefined;\n // Optional push stream of session changes (fires immediately with the current\n // one), so a host can complete sign-in on an OAuth return with no live connect().\n subscribe?(\n listener: (session: WalletSession | undefined) => void,\n ): () => void;\n}\n\n// Identity + capabilities, declared once per adapter in a dependency-free module\n// so a host can list methods and detect a redirect return with no wallet library.\nexport interface WalletAdapterMeta {\n id: string;\n // URL params the adapter leaves when a full-page OAuth login returns; empty for\n // adapters with no redirect flow.\n redirectReturnParams: string[];\n // Must be known before load(): the login UI renders buttons before any wallet\n // library is fetched.\n supportedMethods: LoginMethod[];\n}\n\n// Behaviour only — what an adapter factory returns. Identity lives in the meta.\nexport interface WalletAdapterImpl {\n // React provider that must wrap the app subtree for this adapter to work; the\n // host passes its current theme so the adapter's UI can match.\n Provider: ComponentType<{ children: ReactNode; theme?: WalletTheme }>;\n // Hook returning imperative controls; MUST be called inside <Provider>.\n useController: () => WalletController;\n}\n\n// What the host consumes: resolveAdapters pairs an impl with its meta.\nexport interface WalletAdapter extends WalletAdapterImpl {\n meta: WalletAdapterMeta;\n}\n\n// An adapter's light entry: eager meta plus a lazy loader that pulls the factory\n// and its wallet library only once login is activated.\nexport interface WalletAdapterDescriptor {\n meta: WalletAdapterMeta;\n load: () => Promise<WalletAdapterImpl>;\n}\n\nexport type WalletAdapterFactory<Config = unknown> = (\n config: Config,\n) => WalletAdapterImpl;\n\nexport type WalletAdapterProvider<Config = unknown> = (\n config: Config,\n) => WalletAdapterDescriptor;\n"],"mappings":";AAKA,MAAa,cAAc;CACzB,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACR;AAkBD,SAAgB,qBAAqB,OAInC;AACA,KAAI,UAAU,KAAA,EAAW,QAAO,EAAE,MAAM,SAAS;AACjD,KAAI,OAAO,UAAU,SAAU,QAAO,EAAE,MAAM,OAAO;AACrD,QAAO;EACL,MAAM,MAAM;EACZ,aAAa,MAAM;EACnB,uBAAuB,MAAM;EAC9B"}
@@ -0,0 +1,63 @@
1
+ import { c as WalletController, l as WalletSession, o as WalletAdapterMeta, t as LoginMethod } from "./types-C-hJrsQg.js";
2
+
3
+ //#region src/wallet/privy/meta.d.ts
4
+ /** Structural subset of viem's `Chain`, so any `viem/chains` / `wagmi/chains` export fits regardless of the host's viem version. */
5
+ interface PrivyChain {
6
+ id: number;
7
+ name: string;
8
+ nativeCurrency: {
9
+ name: string;
10
+ symbol: string;
11
+ decimals: number;
12
+ };
13
+ rpcUrls: {
14
+ default: {
15
+ http: readonly string[];
16
+ };
17
+ };
18
+ }
19
+ type PrivyLoginMethod = "wallet" | "google" | "apple" | "email";
20
+ declare const DEFAULT_PRIVY_METHODS: LoginMethod[];
21
+ interface PHRenownPrivyAdapterConfig {
22
+ appId: string;
23
+ clientId?: string;
24
+ /** Login methods to offer; defaults to [google, email]. */
25
+ methods?: PrivyLoginMethod[];
26
+ /** Chain Renown issues credentials on (e.g. `mainnet` from `viem/chains`). Pins the embedded wallet to it: a wallet on another chain is a different DID and is rejected. */
27
+ chain?: PrivyChain;
28
+ /** Privy `appearance.walletList`. Defaults to `["detected_ethereum_wallets"]`: with external wallets disabled here (they go through the rainbow adapter), anything else makes Privy fetch the WalletConnect explorer listings (~163 KB) on mount. Set it only if you want those listings. */
29
+ walletList?: string[];
30
+ }
31
+ declare function resolvePrivyMethods(methods?: string[]): LoginMethod[];
32
+ declare const privyAdapterMeta: Omit<WalletAdapterMeta, "supportedMethods">;
33
+ //#endregion
34
+ //#region src/wallet/privy/types.d.ts
35
+ /** Privy's email OTP flow status, as reported by its `useLoginWithEmail`. */
36
+ type PrivyEmailStatus = "initial" | "sending-code" | "awaiting-code-input" | "submitting-code" | "done" | "error";
37
+ /** Privy auth state the bridge mirrors into the core, for hosts drawing their own sign-in screens. */
38
+ interface PrivyAuthState {
39
+ /** Privy has finished restoring any existing session. */
40
+ ready: boolean;
41
+ /** Privy holds a session (before Renown has issued a credential). */
42
+ authenticated: boolean;
43
+ /** The signed-in user's verified email, when logged in by email. */
44
+ email?: string;
45
+ emailStatus: PrivyEmailStatus;
46
+ emailError?: Error;
47
+ }
48
+ interface SendCodeOptions {
49
+ /** Reject addresses with no Privy account instead of creating one. */
50
+ disableSignup?: boolean;
51
+ }
52
+ /** The Privy adapter's controller: `WalletController` plus the headless email OTP surface, so a host can draw its own sign-in screens without importing `@privy-io/react-auth`. */
53
+ interface PrivyWalletController extends WalletController {
54
+ /** Send a one-time code to `email`. */
55
+ sendCode(email: string, options?: SendCodeOptions): Promise<void>;
56
+ /** Verify the code; resolves with the embedded-wallet session, ready for `login(session)`. */
57
+ loginWithCode(code: string): Promise<WalletSession>;
58
+ getState(): PrivyAuthState;
59
+ subscribeState(listener: (state: PrivyAuthState) => void): () => void;
60
+ }
61
+ //#endregion
62
+ export { DEFAULT_PRIVY_METHODS as a, PrivyLoginMethod as c, SendCodeOptions as i, privyAdapterMeta as l, PrivyEmailStatus as n, PHRenownPrivyAdapterConfig as o, PrivyWalletController as r, PrivyChain as s, PrivyAuthState as t, resolvePrivyMethods as u };
63
+ //# sourceMappingURL=types-DInveFLz.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-DInveFLz.d.ts","names":[],"sources":["../src/wallet/privy/meta.ts","../src/wallet/privy/types.ts"],"mappings":";;;;UAGiB,UAAA;EACf,EAAA;EACA,IAAA;EACA,cAAA;IAAkB,IAAA;IAAc,MAAA;IAAgB,QAAA;EAAA;EAChD,OAAA;IAAW,OAAA;MAAW,IAAA;IAAA;EAAA;AAAA;AAAA,KAKZ,gBAAA;AAAA,cAUC,qBAAA,EAAuB,WAAA;AAAA,UAMnB,0BAAA;EACf,KAAA;EACA,QAAA;EAlB0B;EAoB1B,OAAA,GAAU,gBAAA;EAPX;EASC,KAAA,GAAQ,UAAA;EAZ0B;EAclC,UAAA;AAAA;AAAA,iBAKc,mBAAA,CAAoB,OAAA,cAAqB,WAAA;AAAA,cAe5C,gBAAA,EAAkB,IAAA,CAAK,iBAAA;;;;KClDxB,gBAAA;ADHZ;AAAA,UCYiB,cAAA;;EAEf,KAAA;EDbA;ECeA,aAAA;EDbA;ECeA,KAAA;EACA,WAAA,EAAa,gBAAA;EACb,UAAA,GAAa,KAAA;AAAA;AAAA,UAGE,eAAA;EDnBO;ECqBtB,aAAA;AAAA;ADhBF;AAAA,UCoBiB,qBAAA,SAA8B,gBAAA;;EAE7C,QAAA,CAAS,KAAA,UAAe,OAAA,GAAU,eAAA,GAAkB,OAAA;EDtB1B;ECwB1B,aAAA,CAAc,IAAA,WAAe,OAAA,CAAQ,aAAA;EACrC,QAAA,IAAY,cAAA;EACZ,cAAA,CAAe,QAAA,GAAW,KAAA,EAAO,cAAA;AAAA"}
@@ -1,12 +1,14 @@
1
- import { $ as User, A as ISigner, B as PKHDid, G as RenownEvents, H as ProfileFetcher, J as RenownStorageMap, M as InternalUser, N as Issuer, V as PowerhouseVerifiableCredential, W as RenownEventEmitter, f as IRenownCrypto, g as AuthVerifiedCredential, k as IRenown, nt as VerifiedCredential, ot as MemoryStorage, p as JsonWebKeyPairStorage, q as RenownStorage, v as CreateBearerTokenOptions, z as LoginStatus } from "./signer-DYKGoYHB.js";
1
+ import { $ as MemoryStorage, A as LoginStatus, C as InternalUser, F as RenownEventEmitter, G as User, H as SignInParams, I as RenownEvents, N as ProfileFetcher, R as RenownStorage, Y as VerifiedCredential, b as IRenown, ht as SwitchboardRequestFn, i as JsonWebKeyPairStorage, j as PKHDid, l as CreateBearerTokenOptions, mt as SwitchboardClient, r as IRenownCrypto, s as AuthVerifiedCredential, w as Issuer, x as ISigner, z as RenownStorageMap } from "./types-BGQKPoUr.js";
2
2
  import { Resolver } from "did-resolver";
3
3
 
4
4
  //#region src/common.d.ts
5
5
  declare class RenownMemoryStorage extends MemoryStorage<RenownStorageMap> {}
6
6
  declare class Renown implements IRenown {
7
7
  #private;
8
- constructor(store: RenownStorage, eventEmitter: RenownEventEmitter, crypto: IRenownCrypto, appName: string, baseUrl?: string, profileFetcher?: ProfileFetcher);
8
+ constructor(store: RenownStorage, eventEmitter: RenownEventEmitter, crypto: IRenownCrypto, appName: string, baseUrl?: string, profileFetcher?: ProfileFetcher, switchboard?: SwitchboardClient, chainId?: number);
9
9
  get baseUrl(): string;
10
+ /** Chain id this app issues credentials on; a session from another chain is rejected by {@link signIn}. */
11
+ get chainId(): number;
10
12
  get user(): InternalUser | undefined;
11
13
  get status(): LoginStatus;
12
14
  get signer(): ISigner;
@@ -14,104 +16,22 @@ declare class Renown implements IRenown {
14
16
  get did(): `did:${string}`;
15
17
  get profileFetcher(): ProfileFetcher | undefined;
16
18
  login(userDid: string): Promise<User>;
19
+ signIn(params: SignInParams): Promise<User>;
17
20
  logout(): Promise<void>;
21
+ revalidate(): Promise<boolean>;
22
+ refreshProfile(): Promise<boolean>;
18
23
  on<K extends keyof RenownEvents>(event: K, listener: (data: RenownEvents[K]) => void): () => void;
19
24
  verifyBearerToken(token: string): Promise<false | AuthVerifiedCredential>;
20
25
  getBearerToken(options: CreateBearerTokenOptions): Promise<string>;
21
26
  }
22
27
  //#endregion
23
- //#region src/credential.d.ts
24
- type Hex = `0x${string}`;
25
- type TypedDataDomain = {
26
- name?: string;
27
- version?: string;
28
- chainId?: number;
29
- verifyingContract?: Hex;
30
- salt?: Hex;
31
- };
32
- type TypedDataParameter = {
33
- name: string;
34
- type: string;
35
- };
36
- /** EIP-712 domain as signed by the credential issuer. */
37
- type CredentialDomain = {
38
- version: string;
39
- chainId: number;
40
- };
41
- /** The credential body that is EIP-712 signed (everything except `proof`). */
42
- type CredentialMessage = {
43
- "@context": string[];
44
- type: string[];
45
- id: string;
46
- issuer: {
47
- id: string;
48
- ethereumAddress: Hex;
49
- };
50
- credentialSubject: {
51
- id: string;
52
- app: string;
53
- };
54
- credentialSchema: {
55
- id: string;
56
- type: string;
57
- };
58
- issuanceDate: string;
59
- expirationDate: string;
60
- };
61
- /** Typed-data signer; matches the loose shape used by wallet adapters. */
62
- type SignCredentialTypedData = (args: {
63
- domain: TypedDataDomain;
64
- types: Record<string, readonly TypedDataParameter[]>;
65
- primaryType: string;
66
- message: Record<string, unknown>;
67
- }) => Promise<Hex>;
68
- interface BuildCredentialParams {
69
- signTypedData: SignCredentialTypedData;
70
- address: Hex;
71
- chainId: number;
72
- app: string;
73
- /** Credential subject id: the app/client DID the credential delegates to. */
74
- appId: string;
75
- expiresInDays?: number;
76
- }
77
- /** Assemble a Renown delegation VC and sign it with the provided signer. */
78
- declare function buildAndSignCredential(params: BuildCredentialParams): Promise<PowerhouseVerifiableCredential>;
79
- /** Recover the address that signed a credential's EIP-712 proof. */
80
- declare function recoverCredentialSigner(credential: PowerhouseVerifiableCredential): Promise<Hex>;
81
- /** True when the proof was signed by the credential's declared issuer address. */
82
- declare function verifyCredentialSignature(credential: PowerhouseVerifiableCredential): Promise<boolean>;
83
- interface FetchDelegationCredentialOptions {
84
- /** Ethereum address that must have issued the credential. */
85
- address: string;
86
- /** Chain id the credential must be scoped to. */
87
- chainId: number;
88
- /** App/client DID the credential must delegate to (credentialSubject.id). */
89
- appDid: string;
90
- /** Renown service base URL. Defaults to DEFAULT_RENOWN_URL. */
28
+ //#region src/discovery.d.ts
29
+ interface ResolveSwitchboardEndpointOptions {
30
+ switchboardUrl?: string;
91
31
  baseUrl?: string;
92
- /** Re-verify the EIP-712 proof signature (default true). */
93
- verifySignature?: boolean;
32
+ timeoutMs?: number;
94
33
  }
95
- declare function fetchDelegationCredential(options: FetchDelegationCredentialOptions): Promise<PowerhouseVerifiableCredential | undefined>;
96
- interface VerifiedAuthCredential {
97
- address: string;
98
- chainId: number;
99
- networkId: string;
100
- /** Owner identity: the pkh DID (did:pkh:<net>:<chainId>:<address>). */
101
- did: string;
102
- /** App/client DID the bearer token was issued by. */
103
- appDid: string;
104
- credential: PowerhouseVerifiableCredential;
105
- }
106
- interface VerifyAuthCredentialOptions {
107
- /** Expected `aud` claim on the bearer token. */
108
- audience?: string;
109
- /** Renown service base URL. */
110
- renownUrl?: string;
111
- /** Re-verify the credential's EIP-712 proof (default true). */
112
- verifySignature?: boolean;
113
- }
114
- declare function verifyAuthCredential(jwt: string, options?: VerifyAuthCredentialOptions): Promise<VerifiedAuthCredential | undefined>;
34
+ declare function resolveSwitchboardEndpoint(options: ResolveSwitchboardEndpointOptions): Promise<string | undefined>;
115
35
  //#endregion
116
36
  //#region src/renown-builder.d.ts
117
37
  interface RenownBuilderOptions {
@@ -121,7 +41,10 @@ interface RenownBuilderOptions {
121
41
  crypto?: IRenownCrypto;
122
42
  keyPairStorage?: JsonWebKeyPairStorage;
123
43
  baseUrl?: string;
44
+ switchboardUrl?: string;
124
45
  profileFetcher?: ProfileFetcher;
46
+ /** Chain id credentials are issued on (default 1). The issuer DID embeds it, so `signIn` rejects a wallet session from another chain. */
47
+ chainId?: number;
125
48
  }
126
49
  /**
127
50
  * Base builder for creating Renown instances.
@@ -160,6 +83,8 @@ declare class BaseRenownBuilder {
160
83
  * Defaults to https://www.renown.id
161
84
  */
162
85
  withBaseUrl(baseUrl: string): this;
86
+ withSwitchboardUrl(switchboardUrl: string): this;
87
+ withChainId(chainId: number): this;
163
88
  /**
164
89
  * Set a profile fetcher strategy for enriching user data after login.
165
90
  * The fetcher receives the authenticated user and the base URL,
@@ -179,9 +104,71 @@ declare class BaseRenownBuilder {
179
104
  static from(options: RenownBuilderOptions): BaseRenownBuilder;
180
105
  }
181
106
  //#endregion
107
+ //#region src/local-credential-verifier.d.ts
108
+ /** Confirms an authenticated signer's delegation credential is still live. */
109
+ type CredentialCheck = (params: {
110
+ address: string;
111
+ chainId: number;
112
+ appId: string;
113
+ }) => Promise<boolean>;
114
+ interface LocalCredentialVerifierOptions {
115
+ /** Notified when the read itself fails; the check then fails closed. */
116
+ onError?: (error: unknown) => void;
117
+ }
118
+ /** A credential check that reads a Switchboard's own renown read model through
119
+ * `execute`, rather than any Renown or Switchboard over HTTP. */
120
+ declare function createLocalCredentialVerifier(execute: SwitchboardRequestFn, options?: LocalCredentialVerifierOptions): CredentialCheck;
121
+ //#endregion
182
122
  //#region src/profile.d.ts
183
123
  declare const fetchRenownProfile: ProfileFetcher;
184
124
  //#endregion
125
+ //#region src/session.d.ts
126
+ /** Server-side view of an authenticated Renown session. */
127
+ interface RenownSession {
128
+ /** Authenticated user identity derived from the session token. */
129
+ user: User;
130
+ /** App/client DID the token was issued by. */
131
+ appDid: string;
132
+ /** Token expiry (epoch seconds), when present. */
133
+ expiresAt?: number;
134
+ }
135
+ /** Display hint carried alongside the token (unverified; not for auth). */
136
+ interface RenownSessionProfile {
137
+ name?: string | null;
138
+ avatar?: string | null;
139
+ /** Renown profile document id, so SSR can resolve profile links. */
140
+ documentId?: string | null;
141
+ username?: string | null;
142
+ userImage?: string | null;
143
+ }
144
+ /** The `renown_session` cookie payload: the bearer token + a display hint. */
145
+ interface RenownSessionCookie {
146
+ token: string;
147
+ profile?: RenownSessionProfile | null;
148
+ }
149
+ interface VerifyRenownSessionOptions {
150
+ /** Expected `aud` claim on the token. */
151
+ audience?: string;
152
+ /** Switchboard GraphQL endpoint used when re-verifying the credential. */
153
+ switchboardUrl?: string;
154
+ /** Renown service base URL used when re-verifying the credential. */
155
+ renownUrl?: string;
156
+ /** Also re-verify the credential against Switchboard (default false = token-only, no network). */
157
+ verifyCredential?: boolean;
158
+ }
159
+ /** Claims read from a session token without verifying its signature. */
160
+ interface RenownSessionClaims {
161
+ address?: string;
162
+ chainId?: number;
163
+ networkId?: string;
164
+ /** Expiry in epoch seconds. */
165
+ expiresAt?: number;
166
+ }
167
+ /** Serialize a session cookie value (token + optional display hint). */
168
+ declare function serializeRenownSessionCookie(value: RenownSessionCookie): string;
169
+ declare function readSessionClaims(value: string): RenownSessionClaims | undefined;
170
+ declare function verifyRenownSession(value: string, options?: VerifyRenownSessionOptions): Promise<RenownSession | undefined>;
171
+ //#endregion
185
172
  //#region src/utils.d.ts
186
173
  type ILogger = {
187
174
  level: "verbose" | "debug" | "info" | "warn" | "error";
@@ -210,5 +197,5 @@ declare function assertIsAuthCredential(credential: VerifiedCredential): asserts
210
197
  declare function createAuthBearerToken(chainId: number, networkId: string, address: string, issuer: Issuer, options?: CreateBearerTokenOptions): Promise<string>;
211
198
  declare const getResolver: () => Resolver;
212
199
  //#endregion
213
- export { Renown as C, verifyCredentialSignature as S, VerifyAuthCredentialOptions as _, getResolver as a, recoverCredentialSigner as b, fetchRenownProfile as c, BuildCredentialParams as d, CredentialDomain as f, VerifiedAuthCredential as g, SignCredentialTypedData as h, createAuthBearerToken as i, BaseRenownBuilder as l, FetchDelegationCredentialOptions as m, VerifyAuthBearerTokenOptions as n, parsePkhDid as o, CredentialMessage as p, assertIsAuthCredential as r, verifyAuthBearerToken as s, ILogger as t, RenownBuilderOptions as u, buildAndSignCredential as v, RenownMemoryStorage as w, verifyAuthCredential as x, fetchDelegationCredential as y };
214
- //# sourceMappingURL=utils-C9ZgMs_C.d.ts.map
200
+ export { resolveSwitchboardEndpoint as C, ResolveSwitchboardEndpointOptions as S, RenownMemoryStorage as T, CredentialCheck as _, getResolver as a, BaseRenownBuilder as b, RenownSession as c, RenownSessionProfile as d, VerifyRenownSessionOptions as f, fetchRenownProfile as g, verifyRenownSession as h, createAuthBearerToken as i, RenownSessionClaims as l, serializeRenownSessionCookie as m, VerifyAuthBearerTokenOptions as n, parsePkhDid as o, readSessionClaims as p, assertIsAuthCredential as r, verifyAuthBearerToken as s, ILogger as t, RenownSessionCookie as u, LocalCredentialVerifierOptions as v, Renown as w, RenownBuilderOptions as x, createLocalCredentialVerifier as y };
201
+ //# sourceMappingURL=utils-DtWREYeO.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-DtWREYeO.d.ts","names":[],"sources":["../src/common.ts","../src/discovery.ts","../src/renown-builder.ts","../src/local-credential-verifier.ts","../src/profile.ts","../src/session.ts","../src/utils.ts"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { a as WalletAdapterImpl, c as WalletController, d as WalletThemeColors, f as normalizeWalletTheme, i as WalletAdapterFactory, l as WalletSession, n as WalletAdapter, o as WalletAdapterMeta, r as WalletAdapterDescriptor, s as WalletAdapterProvider, t as LoginMethod, u as WalletTheme } from "../types-C-hJrsQg.js";
2
+
3
+ //#region src/wallet/controller.d.ts
4
+ declare function isWalletRedirectReturn(search: string, metas: WalletAdapterMeta[]): boolean;
5
+ declare function resolveAdapters(descriptors: WalletAdapterDescriptor[] | undefined): Promise<WalletAdapter[]>;
6
+ //#endregion
7
+ export { LoginMethod, WalletAdapter, WalletAdapterDescriptor, WalletAdapterFactory, WalletAdapterImpl, WalletAdapterMeta, WalletAdapterProvider, WalletController, WalletSession, WalletTheme, WalletThemeColors, isWalletRedirectReturn, normalizeWalletTheme, resolveAdapters };
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/wallet/controller.ts"],"mappings":";;;iBAQgB,sBAAA,CACd,MAAA,UACA,KAAA,EAAO,iBAAA;AAAA,iBAUa,eAAA,CACpB,WAAA,EAAa,uBAAA,iBACZ,OAAA,CAAQ,aAAA"}
@@ -0,0 +1,30 @@
1
+ import { n as normalizeWalletTheme, t as LoginMethod } from "../types-C_qc_62W.js";
2
+ //#region src/wallet/controller.ts
3
+ function isWalletRedirectReturn(search, metas) {
4
+ const params = new URLSearchParams(search);
5
+ return metas.some((meta) => meta.redirectReturnParams.some((param) => params.has(param)));
6
+ }
7
+ async function resolveAdapters(descriptors) {
8
+ if (!descriptors || descriptors.length === 0) return [];
9
+ const settled = await Promise.allSettled(descriptors.map((descriptor) => descriptor.load()));
10
+ const adapters = [];
11
+ const failures = [];
12
+ settled.forEach((result, index) => {
13
+ const { meta } = descriptors[index];
14
+ if (result.status === "fulfilled") adapters.push({
15
+ ...result.value,
16
+ meta
17
+ });
18
+ else failures.push(`${meta.id}: ${describeError(result.reason)}`);
19
+ });
20
+ if (adapters.length === 0) throw new Error(`No wallet adapter could be loaded. ${failures.join("; ")}`);
21
+ if (failures.length > 0) console.error(`[renown] Some wallet adapters failed to load. ${failures.join("; ")}`);
22
+ return adapters;
23
+ }
24
+ function describeError(error) {
25
+ return error instanceof Error ? error.message : String(error);
26
+ }
27
+ //#endregion
28
+ export { LoginMethod, isWalletRedirectReturn, normalizeWalletTheme, resolveAdapters };
29
+
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/wallet/controller.ts"],"sourcesContent":["import type {\n WalletAdapter,\n WalletAdapterDescriptor,\n WalletAdapterMeta,\n} from \"./types.js\";\n\n// True when a URL search string looks like a wallet OAuth redirect return, per\n// each adapter's own declared params — no adapter-specific strings live here.\nexport function isWalletRedirectReturn(\n search: string,\n metas: WalletAdapterMeta[],\n): boolean {\n const params = new URLSearchParams(search);\n return metas.some((meta) =>\n meta.redirectReturnParams.some((param) => params.has(param)),\n );\n}\n\n// Load the descriptors the host passed in, pairing each resolved implementation\n// with its already-eager meta so identity is declared in exactly one place.\nexport async function resolveAdapters(\n descriptors: WalletAdapterDescriptor[] | undefined,\n): Promise<WalletAdapter[]> {\n if (!descriptors || descriptors.length === 0) return [];\n // allSettled, not all: one broken loader must not take the others down.\n const settled = await Promise.allSettled(\n descriptors.map((descriptor) => descriptor.load()),\n );\n\n const adapters: WalletAdapter[] = [];\n const failures: string[] = [];\n settled.forEach((result, index) => {\n const { meta } = descriptors[index];\n if (result.status === \"fulfilled\") {\n adapters.push({ ...result.value, meta });\n } else {\n failures.push(`${meta.id}: ${describeError(result.reason)}`);\n }\n });\n\n if (adapters.length === 0) {\n throw new Error(\n `No wallet adapter could be loaded. ${failures.join(\"; \")}`,\n );\n }\n if (failures.length > 0) {\n console.error(\n `[renown] Some wallet adapters failed to load. ${failures.join(\"; \")}`,\n );\n }\n return adapters;\n}\n\nfunction describeError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":";;AAQA,SAAgB,uBACd,QACA,OACS;CACT,MAAM,SAAS,IAAI,gBAAgB,OAAO;AAC1C,QAAO,MAAM,MAAM,SACjB,KAAK,qBAAqB,MAAM,UAAU,OAAO,IAAI,MAAM,CAAC,CAC7D;;AAKH,eAAsB,gBACpB,aAC0B;AAC1B,KAAI,CAAC,eAAe,YAAY,WAAW,EAAG,QAAO,EAAE;CAEvD,MAAM,UAAU,MAAM,QAAQ,WAC5B,YAAY,KAAK,eAAe,WAAW,MAAM,CAAC,CACnD;CAED,MAAM,WAA4B,EAAE;CACpC,MAAM,WAAqB,EAAE;AAC7B,SAAQ,SAAS,QAAQ,UAAU;EACjC,MAAM,EAAE,SAAS,YAAY;AAC7B,MAAI,OAAO,WAAW,YACpB,UAAS,KAAK;GAAE,GAAG,OAAO;GAAO;GAAM,CAAC;MAExC,UAAS,KAAK,GAAG,KAAK,GAAG,IAAI,cAAc,OAAO,OAAO,GAAG;GAE9D;AAEF,KAAI,SAAS,WAAW,EACtB,OAAM,IAAI,MACR,sCAAsC,SAAS,KAAK,KAAK,GAC1D;AAEH,KAAI,SAAS,SAAS,EACpB,SAAQ,MACN,iDAAiD,SAAS,KAAK,KAAK,GACrE;AAEH,QAAO;;AAGT,SAAS,cAAc,OAAwB;AAC7C,QAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM"}
@@ -0,0 +1,9 @@
1
+ import { a as WalletAdapterImpl } from "../../types-C-hJrsQg.js";
2
+ import { r as PHRenownMockAdapterConfig } from "../../meta-BesJP74N.js";
3
+
4
+ //#region src/wallet/mock/factory.d.ts
5
+ /** Headless test/dev wallet adapter: `connect()` resolves immediately with a session backed by a viem local account (real EIP-712 signatures, no wallet UI or OAuth). **TEST/DEV ONLY; never enable in production** — it signs with a known key. See the reactor-browser README "Testing" and the Academy Renown auth guide. */
6
+ declare function createMockAdapter(config: PHRenownMockAdapterConfig): WalletAdapterImpl;
7
+ //#endregion
8
+ export { createMockAdapter };
9
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","names":[],"sources":["../../../src/wallet/mock/factory.ts"],"mappings":";;;;;iBAqBgB,iBAAA,CACd,MAAA,EAAQ,yBAAA,GACP,iBAAA"}
@@ -0,0 +1,35 @@
1
+ import { r as resolveMockMethods } from "../../meta-CHgd9Qd0.js";
2
+ import { privateKeyToAccount } from "viem/accounts";
3
+ //#region src/wallet/mock/factory.ts
4
+ const DEFAULT_TEST_KEY = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80";
5
+ const MockProvider = (props) => props.children;
6
+ /** Headless test/dev wallet adapter: `connect()` resolves immediately with a session backed by a viem local account (real EIP-712 signatures, no wallet UI or OAuth). **TEST/DEV ONLY; never enable in production** — it signs with a known key. See the reactor-browser README "Testing" and the Academy Renown auth guide. */
7
+ function createMockAdapter(config) {
8
+ const account = privateKeyToAccount(config.privateKey ?? DEFAULT_TEST_KEY);
9
+ const chainId = config.chainId ?? 1;
10
+ resolveMockMethods(config.methods);
11
+ const signTypedData = (args) => account.signTypedData({
12
+ domain: args.domain,
13
+ types: args.types,
14
+ primaryType: args.primaryType,
15
+ message: args.message
16
+ });
17
+ const session = {
18
+ address: account.address,
19
+ chainId,
20
+ signTypedData
21
+ };
22
+ const controller = {
23
+ connect: () => Promise.resolve(session),
24
+ disconnect: () => Promise.resolve(),
25
+ getSession: () => session
26
+ };
27
+ return {
28
+ Provider: MockProvider,
29
+ useController: () => controller
30
+ };
31
+ }
32
+ //#endregion
33
+ export { createMockAdapter };
34
+
35
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","names":[],"sources":["../../../src/wallet/mock/factory.ts"],"sourcesContent":["import { privateKeyToAccount } from \"viem/accounts\";\nimport type { ComponentType, ReactNode } from \"react\";\nimport type { SignCredentialTypedData } from \"../../credential.js\";\nimport type {\n WalletAdapterImpl,\n WalletController,\n WalletSession,\n} from \"../types.js\";\nimport { resolveMockMethods, type PHRenownMockAdapterConfig } from \"./meta.js\";\n\ntype Hex = `0x${string}`;\n\n// Well-known Anvil/Hardhat test account #0 private key. Default so tests need no\n// key; every connect resolves to its deterministic address.\nconst DEFAULT_TEST_KEY: Hex =\n \"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80\";\n\nconst MockProvider: ComponentType<{ children: ReactNode }> = (props) =>\n props.children;\n\n/** Headless test/dev wallet adapter: `connect()` resolves immediately with a session backed by a viem local account (real EIP-712 signatures, no wallet UI or OAuth). **TEST/DEV ONLY; never enable in production** — it signs with a known key. See the reactor-browser README \"Testing\" and the Academy Renown auth guide. */\nexport function createMockAdapter(\n config: PHRenownMockAdapterConfig,\n): WalletAdapterImpl {\n const account = privateKeyToAccount(config.privateKey ?? DEFAULT_TEST_KEY);\n const chainId = config.chainId ?? 1;\n // Validated here too: the descriptor resolves these for its meta, but the\n // factory is public API and may be called directly.\n resolveMockMethods(config.methods);\n\n const signTypedData: SignCredentialTypedData = (args) =>\n account.signTypedData({\n domain: args.domain,\n types: args.types,\n primaryType: args.primaryType,\n message: args.message,\n } as unknown as Parameters<typeof account.signTypedData>[0]);\n\n const session: WalletSession = {\n address: account.address,\n chainId,\n signTypedData,\n };\n\n const controller: WalletController = {\n connect: () => Promise.resolve(session),\n disconnect: () => Promise.resolve(),\n getSession: () => session,\n };\n\n return { Provider: MockProvider, useController: () => controller };\n}\n"],"mappings":";;;AAcA,MAAM,mBACJ;AAEF,MAAM,gBAAwD,UAC5D,MAAM;;AAGR,SAAgB,kBACd,QACmB;CACnB,MAAM,UAAU,oBAAoB,OAAO,cAAc,iBAAiB;CAC1E,MAAM,UAAU,OAAO,WAAW;AAGlC,oBAAmB,OAAO,QAAQ;CAElC,MAAM,iBAA0C,SAC9C,QAAQ,cAAc;EACpB,QAAQ,KAAK;EACb,OAAO,KAAK;EACZ,aAAa,KAAK;EAClB,SAAS,KAAK;EACf,CAA2D;CAE9D,MAAM,UAAyB;EAC7B,SAAS,QAAQ;EACjB;EACA;EACD;CAED,MAAM,aAA+B;EACnC,eAAe,QAAQ,QAAQ,QAAQ;EACvC,kBAAkB,QAAQ,SAAS;EACnC,kBAAkB;EACnB;AAED,QAAO;EAAE,UAAU;EAAc,qBAAqB;EAAY"}
@@ -0,0 +1,9 @@
1
+ import { r as WalletAdapterDescriptor } from "../../types-C-hJrsQg.js";
2
+ import { a as resolveMockMethods, i as mockAdapterMeta, n as MockLoginMethod, r as PHRenownMockAdapterConfig, t as DEFAULT_MOCK_METHODS } from "../../meta-BesJP74N.js";
3
+
4
+ //#region src/wallet/mock/index.d.ts
5
+ /** Headless test/dev wallet adapter for `RenownWalletProvider`: signs real EIP-712 credentials with a local viem account, no wallet UI or OAuth, so e2e sign-in is deterministic. **TEST/DEV ONLY; never enable in production** — it signs with a known key. Needs only `viem`, which `@renown/sdk` already depends on. */
6
+ declare function mockAdapter(config: PHRenownMockAdapterConfig): WalletAdapterDescriptor;
7
+ //#endregion
8
+ export { DEFAULT_MOCK_METHODS, type MockLoginMethod, type PHRenownMockAdapterConfig, mockAdapter, mockAdapterMeta, resolveMockMethods };
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/wallet/mock/index.ts"],"mappings":";;;;;iBAQgB,WAAA,CACd,MAAA,EAAQ,yBAAA,GACP,uBAAA"}
@@ -0,0 +1,16 @@
1
+ import { n as mockAdapterMeta, r as resolveMockMethods, t as DEFAULT_MOCK_METHODS } from "../../meta-CHgd9Qd0.js";
2
+ //#region src/wallet/mock/index.ts
3
+ /** Headless test/dev wallet adapter for `RenownWalletProvider`: signs real EIP-712 credentials with a local viem account, no wallet UI or OAuth, so e2e sign-in is deterministic. **TEST/DEV ONLY; never enable in production** — it signs with a known key. Needs only `viem`, which `@renown/sdk` already depends on. */
4
+ function mockAdapter(config) {
5
+ return {
6
+ meta: {
7
+ ...mockAdapterMeta,
8
+ supportedMethods: resolveMockMethods(config.methods)
9
+ },
10
+ load: () => import("./factory.js").then((m) => m.createMockAdapter(config))
11
+ };
12
+ }
13
+ //#endregion
14
+ export { DEFAULT_MOCK_METHODS, mockAdapter, mockAdapterMeta, resolveMockMethods };
15
+
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/wallet/mock/index.ts"],"sourcesContent":["import type { WalletAdapterDescriptor } from \"../types.js\";\nimport {\n mockAdapterMeta,\n resolveMockMethods,\n type PHRenownMockAdapterConfig,\n} from \"./meta.js\";\n\n/** Headless test/dev wallet adapter for `RenownWalletProvider`: signs real EIP-712 credentials with a local viem account, no wallet UI or OAuth, so e2e sign-in is deterministic. **TEST/DEV ONLY; never enable in production** — it signs with a known key. Needs only `viem`, which `@renown/sdk` already depends on. */\nexport function mockAdapter(\n config: PHRenownMockAdapterConfig,\n): WalletAdapterDescriptor {\n return {\n meta: {\n ...mockAdapterMeta,\n supportedMethods: resolveMockMethods(config.methods),\n },\n load: () => import(\"./factory.js\").then((m) => m.createMockAdapter(config)),\n };\n}\n\nexport {\n DEFAULT_MOCK_METHODS,\n mockAdapterMeta,\n resolveMockMethods,\n} from \"./meta.js\";\nexport type { MockLoginMethod, PHRenownMockAdapterConfig } from \"./meta.js\";\n"],"mappings":";;;AAQA,SAAgB,YACd,QACyB;AACzB,QAAO;EACL,MAAM;GACJ,GAAG;GACH,kBAAkB,mBAAmB,OAAO,QAAQ;GACrD;EACD,YAAY,OAAO,gBAAgB,MAAM,MAAM,EAAE,kBAAkB,OAAO,CAAC;EAC5E"}
@@ -0,0 +1,79 @@
1
+ import { at as SignCredentialTypedData } from "../../types-BGQKPoUr.js";
2
+ import { a as WalletAdapterImpl, l as WalletSession, t as LoginMethod, u as WalletTheme } from "../../types-C-hJrsQg.js";
3
+ import { i as SendCodeOptions, n as PrivyEmailStatus, o as PHRenownPrivyAdapterConfig, r as PrivyWalletController, s as PrivyChain, t as PrivyAuthState } from "../../types-DInveFLz.js";
4
+ import { ComponentType, ReactNode } from "react";
5
+ import { ConnectedWallet, LoginModalOptions } from "@privy-io/react-auth";
6
+
7
+ //#region src/wallet/privy/adapter.d.ts
8
+ type Hex = `0x${string}`;
9
+ type PrivyOAuthProviderId = "google" | "apple";
10
+ interface PrivyBindings {
11
+ openLoginModal: (options?: LoginModalOptions) => void;
12
+ initOAuth: (options: {
13
+ provider: PrivyOAuthProviderId;
14
+ }) => Promise<void>;
15
+ sendCode: (options: {
16
+ email: string;
17
+ disableSignup?: boolean;
18
+ }) => Promise<void>;
19
+ loginWithCode: (options: {
20
+ code: string;
21
+ }) => Promise<void>;
22
+ logout: () => Promise<void>;
23
+ signTypedData: (args: Parameters<SignCredentialTypedData>[0], address: Hex) => Promise<Hex>;
24
+ }
25
+ declare class PrivyCore {
26
+ readonly supportedMethods: LoginMethod[];
27
+ private bindings;
28
+ private pending;
29
+ private session;
30
+ private listeners;
31
+ private state;
32
+ private stateListeners;
33
+ constructor(supportedMethods: LoginMethod[]);
34
+ bind(bindings: PrivyBindings): () => void;
35
+ getSession(): WalletSession | undefined;
36
+ subscribe(listener: (session: WalletSession | undefined) => void): () => void;
37
+ private emit;
38
+ getState(): PrivyAuthState;
39
+ subscribeState(listener: (state: PrivyAuthState) => void): () => void;
40
+ syncState(next: PrivyAuthState): void;
41
+ syncFromEmbeddedWallet(wallet: ConnectedWallet): void;
42
+ clearSession(): void;
43
+ handleLoginError(error: unknown): void;
44
+ private requireBindings;
45
+ private requireMethod;
46
+ private awaitSession;
47
+ connect(method?: LoginMethod): Promise<WalletSession>;
48
+ sendCode(email: string, options?: SendCodeOptions): Promise<void>;
49
+ loginWithCode(code: string): Promise<WalletSession>;
50
+ disconnect(): Promise<void>;
51
+ private currentBindings;
52
+ private whenReady;
53
+ }
54
+ //#endregion
55
+ //#region src/wallet/privy/bridge.d.ts
56
+ interface PrivyAdapterBridgeProps {
57
+ core: PrivyCore;
58
+ }
59
+ declare function PrivyAdapterBridge({
60
+ core
61
+ }: PrivyAdapterBridgeProps): null;
62
+ //#endregion
63
+ //#region src/wallet/privy/provider.d.ts
64
+ interface PrivyProviderConfig {
65
+ appId: string;
66
+ clientId?: string;
67
+ chain?: PrivyChain;
68
+ walletList?: string[];
69
+ }
70
+ declare function createPrivyProvider(core: PrivyCore, config: PrivyProviderConfig): ComponentType<{
71
+ children: ReactNode;
72
+ theme?: WalletTheme;
73
+ }>;
74
+ //#endregion
75
+ //#region src/wallet/privy/factory.d.ts
76
+ declare function createPrivyAdapter(config: PHRenownPrivyAdapterConfig): WalletAdapterImpl;
77
+ //#endregion
78
+ export { PrivyAdapterBridge, type PrivyAuthState, type PrivyBindings, PrivyCore, type PrivyEmailStatus, type PrivyWalletController, type SendCodeOptions, createPrivyAdapter, createPrivyProvider };
79
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","names":[],"sources":["../../../src/wallet/privy/adapter.ts","../../../src/wallet/privy/bridge.tsx","../../../src/wallet/privy/provider.tsx","../../../src/wallet/privy/factory.ts"],"mappings":";;;;;;;KAUK,GAAA;AAAA,KAcA,oBAAA;AAAA,UAaY,aAAA;EACf,cAAA,GAAiB,OAAA,GAAU,iBAAA;EAC3B,SAAA,GAAY,OAAA;IAAW,QAAA,EAAU,oBAAA;EAAA,MAA2B,OAAA;EAC5D,QAAA,GAAW,OAAA;IACT,KAAA;IACA,aAAA;EAAA,MACI,OAAA;EACN,aAAA,GAAgB,OAAA;IAAW,IAAA;EAAA,MAAmB,OAAA;EAC9C,MAAA,QAAc,OAAA;EACd,aAAA,GACE,IAAA,EAAM,UAAA,CAAW,uBAAA,MACjB,OAAA,EAAS,GAAA,KACN,OAAA,CAAQ,GAAA;AAAA;AAAA,cAgBF,SAAA;EAAA,SACF,gBAAA,EAAkB,WAAA;EAAA,QAEnB,QAAA;EAAA,QACA,OAAA;EAAA,QACA,OAAA;EAAA,QACA,SAAA;EAAA,QACA,KAAA;EAAA,QACA,cAAA;cAEI,gBAAA,EAAkB,WAAA;EAI9B,IAAA,CAAK,QAAA,EAAU,aAAA;EAOf,UAAA,CAAA,GAAc,aAAA;EAMd,SAAA,CACE,QAAA,GAAW,OAAA,EAAS,aAAA;EAAA,QASd,IAAA;EAIR,QAAA,CAAA,GAAY,cAAA;EAIZ,cAAA,CAAe,QAAA,GAAW,KAAA,EAAO,cAAA;EASjC,SAAA,CAAU,IAAA,EAAM,cAAA;EAiBhB,sBAAA,CAAuB,MAAA,EAAQ,eAAA;EA8B/B,YAAA,CAAA;EAOA,gBAAA,CAAiB,KAAA;EAAA,QAOT,eAAA;EAAA,QASA,aAAA;EAAA,QAQA,YAAA;EAuBF,OAAA,CAAQ,MAAA,GAAS,WAAA,GAAc,OAAA,CAAQ,aAAA;EAyBvC,QAAA,CAAS,KAAA,UAAe,OAAA,GAAU,eAAA,GAAkB,OAAA;EAQpD,aAAA,CAAc,IAAA,WAAe,OAAA,CAAQ,aAAA;EAWrC,UAAA,CAAA,GAAc,OAAA;EAAA,QAYZ,eAAA;EAAA,QAIA,SAAA;AAAA;;;UCxPA,uBAAA;EACR,IAAA,EAAM,SAAA;AAAA;AAAA,iBAKQ,kBAAA,CAAA;EAAqB;AAAA,GAAQ,uBAAA;;;UC7BnC,mBAAA;EACR,KAAA;EACA,QAAA;EACA,KAAA,GAAQ,UAAA;EACR,UAAA;AAAA;AAAA,iBAKc,mBAAA,CACd,IAAA,EAAM,SAAA,EACN,MAAA,EAAQ,mBAAA,GACP,aAAA;EAAgB,QAAA,EAAU,SAAA;EAAW,KAAA,GAAQ,WAAA;AAAA;;;iBCLhC,kBAAA,CACd,MAAA,EAAQ,0BAAA,GACP,iBAAA"}