@cedros/login-react 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1183 -0
  3. package/dist/EmailRegisterForm-D_uCEdX9.cjs +1 -0
  4. package/dist/EmailRegisterForm-D_uCEdX9.cjs.map +1 -0
  5. package/dist/EmailRegisterForm-m3rX3A6X.js +2923 -0
  6. package/dist/EmailRegisterForm-m3rX3A6X.js.map +1 -0
  7. package/dist/ErrorMessage-Bm1j5mBT.js +2042 -0
  8. package/dist/ErrorMessage-Bm1j5mBT.js.map +1 -0
  9. package/dist/ErrorMessage-CntMyn93.cjs +1 -0
  10. package/dist/ErrorMessage-CntMyn93.cjs.map +1 -0
  11. package/dist/GoogleLoginButton-CJNJ-THo.cjs +1 -0
  12. package/dist/GoogleLoginButton-CJNJ-THo.cjs.map +1 -0
  13. package/dist/GoogleLoginButton-CvDoOc-0.js +227 -0
  14. package/dist/GoogleLoginButton-CvDoOc-0.js.map +1 -0
  15. package/dist/SolanaLoginButton-BlSgPW50.cjs +1 -0
  16. package/dist/SolanaLoginButton-BlSgPW50.cjs.map +1 -0
  17. package/dist/SolanaLoginButton-h32xN2PQ.js +261 -0
  18. package/dist/SolanaLoginButton-h32xN2PQ.js.map +1 -0
  19. package/dist/assets/argon2Worker-Bi5TuQvD.js +1 -0
  20. package/dist/assets/argon2Worker-Bi5TuQvD.js.map +1 -0
  21. package/dist/components/LoginButton.d.ts +23 -0
  22. package/dist/components/LoginForm.d.ts +9 -0
  23. package/dist/components/LoginModal.d.ts +9 -0
  24. package/dist/components/admin/AdminUserDetail.d.ts +21 -0
  25. package/dist/components/admin/AdminUserList.d.ts +25 -0
  26. package/dist/components/admin/CedrosAdminDashboard.d.ts +48 -0
  27. package/dist/components/admin/SystemSettings.d.ts +19 -0
  28. package/dist/components/apple/AppleLoginButton.d.ts +29 -0
  29. package/dist/components/deposit/CreditBalance.d.ts +19 -0
  30. package/dist/components/deposit/DepositFlow.d.ts +118 -0
  31. package/dist/components/deposit/FeeConfigDisplay.d.ts +15 -0
  32. package/dist/components/deposit/History.d.ts +21 -0
  33. package/dist/components/deposit/TieredAmountSlider.d.ts +19 -0
  34. package/dist/components/deposit/TokenSelector.d.ts +23 -0
  35. package/dist/components/deposit/admin/AdminDepositList.d.ts +21 -0
  36. package/dist/components/deposit/admin/AdminDepositStats.d.ts +15 -0
  37. package/dist/components/deposit/admin/AdminPrivacyPeriodDeposits.d.ts +19 -0
  38. package/dist/components/deposit/admin/AdminWithdrawalHistory.d.ts +19 -0
  39. package/dist/components/deposit/admin/AdminWithdrawalQueue.d.ts +23 -0
  40. package/dist/components/deposit/admin/PrivacySystemStatus.d.ts +15 -0
  41. package/dist/components/deposit/admin/index.d.ts +17 -0
  42. package/dist/components/deposit/index.d.ts +12 -0
  43. package/dist/components/deposit/tierUtils.d.ts +8 -0
  44. package/dist/components/deposit/tokens.d.ts +19 -0
  45. package/dist/components/email/EmailLoginForm.d.ts +11 -0
  46. package/dist/components/email/EmailRegisterForm.d.ts +14 -0
  47. package/dist/components/email/ForgotPasswordForm.d.ts +17 -0
  48. package/dist/components/email/PasswordInput.d.ts +14 -0
  49. package/dist/components/email/ResetPasswordForm.d.ts +22 -0
  50. package/dist/components/google/GoogleLoginButton.d.ts +12 -0
  51. package/dist/components/invites/InviteForm.d.ts +38 -0
  52. package/dist/components/invites/InviteList.d.ts +40 -0
  53. package/dist/components/members/MemberList.d.ts +47 -0
  54. package/dist/components/org/CreateOrgForm.d.ts +7 -0
  55. package/dist/components/org/OrgAvatar.d.ts +7 -0
  56. package/dist/components/org/OrgListView.d.ts +9 -0
  57. package/dist/components/org/OrgSelector.d.ts +51 -0
  58. package/dist/components/org/OrgSwitcher.d.ts +47 -0
  59. package/dist/components/org/icons.d.ts +8 -0
  60. package/dist/components/sessions/SessionList.d.ts +33 -0
  61. package/dist/components/shared/ErrorBoundary.d.ts +38 -0
  62. package/dist/components/shared/ErrorMessage.d.ts +14 -0
  63. package/dist/components/shared/LoadingSpinner.d.ts +16 -0
  64. package/dist/components/solana/SolanaLoginButton.d.ts +49 -0
  65. package/dist/components/templates/FullPageLayout.d.ts +40 -0
  66. package/dist/components/templates/SplitPageLayout.d.ts +44 -0
  67. package/dist/components/templates/index.d.ts +4 -0
  68. package/dist/components/totp/OtpInput.d.ts +32 -0
  69. package/dist/components/totp/QrCode.d.ts +21 -0
  70. package/dist/components/totp/TotpSettings.d.ts +38 -0
  71. package/dist/components/totp/TotpSetup.d.ts +23 -0
  72. package/dist/components/totp/TotpVerify.d.ts +25 -0
  73. package/dist/components/totp/index.d.ts +10 -0
  74. package/dist/components/wallet/CapabilityWarning.d.ts +11 -0
  75. package/dist/components/wallet/PasskeyPrompt.d.ts +34 -0
  76. package/dist/components/wallet/RecoveryPhraseDisplay.d.ts +18 -0
  77. package/dist/components/wallet/RecoveryPhraseInput.d.ts +21 -0
  78. package/dist/components/wallet/WalletAddressRow.d.ts +10 -0
  79. package/dist/components/wallet/WalletEnrollment.d.ts +15 -0
  80. package/dist/components/wallet/WalletManager.d.ts +9 -0
  81. package/dist/components/wallet/WalletRecovery.d.ts +19 -0
  82. package/dist/components/wallet/WalletStatus.d.ts +28 -0
  83. package/dist/components/wallet/WalletUnlock.d.ts +23 -0
  84. package/dist/components/wallet/index.d.ts +23 -0
  85. package/dist/components/webauthn/PasskeyLoginButton.d.ts +8 -0
  86. package/dist/context/CedrosLoginContext.d.ts +24 -0
  87. package/dist/context/CedrosLoginProvider.d.ts +17 -0
  88. package/dist/context/EmbeddedWalletExposure.d.ts +19 -0
  89. package/dist/context/useCedrosLogin.d.ts +12 -0
  90. package/dist/crypto/aesGcm.d.ts +89 -0
  91. package/dist/crypto/argon2.d.ts +65 -0
  92. package/dist/crypto/argon2Worker.d.ts +1 -0
  93. package/dist/crypto/argon2WorkerClient.d.ts +28 -0
  94. package/dist/crypto/bip39.d.ts +106 -0
  95. package/dist/crypto/capabilities.d.ts +35 -0
  96. package/dist/crypto/entropy.d.ts +56 -0
  97. package/dist/crypto/hkdf.d.ts +38 -0
  98. package/dist/crypto/index.d.ts +30 -0
  99. package/dist/crypto/secureWipe.d.ts +90 -0
  100. package/dist/crypto/shamir.d.ts +52 -0
  101. package/dist/crypto/solanaKeypair.d.ts +63 -0
  102. package/dist/crypto/types.d.ts +134 -0
  103. package/dist/crypto/webauthnPrf.d.ts +118 -0
  104. package/dist/email-only.cjs +1 -0
  105. package/dist/email-only.cjs.map +1 -0
  106. package/dist/email-only.d.ts +16 -0
  107. package/dist/email-only.js +15 -0
  108. package/dist/email-only.js.map +1 -0
  109. package/dist/google-only.cjs +1 -0
  110. package/dist/google-only.cjs.map +1 -0
  111. package/dist/google-only.d.ts +13 -0
  112. package/dist/google-only.js +11 -0
  113. package/dist/google-only.js.map +1 -0
  114. package/dist/hooks/useAdminDeposits.d.ts +10 -0
  115. package/dist/hooks/useAdminUsers.d.ts +28 -0
  116. package/dist/hooks/useAppleAuth.d.ts +52 -0
  117. package/dist/hooks/useAuth.d.ts +34 -0
  118. package/dist/hooks/useAuthSession.d.ts +19 -0
  119. package/dist/hooks/useAuthorize.d.ts +62 -0
  120. package/dist/hooks/useCredits.d.ts +11 -0
  121. package/dist/hooks/useDeposit.d.ts +16 -0
  122. package/dist/hooks/useEmailAuth.d.ts +60 -0
  123. package/dist/hooks/useGoogleAuth.d.ts +67 -0
  124. package/dist/hooks/useInstantLink.d.ts +42 -0
  125. package/dist/hooks/useInvites.d.ts +57 -0
  126. package/dist/hooks/useMembers.d.ts +52 -0
  127. package/dist/hooks/useOrgs.d.ts +49 -0
  128. package/dist/hooks/usePasswordReset.d.ts +32 -0
  129. package/dist/hooks/usePendingRecovery.d.ts +34 -0
  130. package/dist/hooks/useRateLimiter.d.ts +58 -0
  131. package/dist/hooks/useSessions.d.ts +45 -0
  132. package/dist/hooks/useSolanaAuth.d.ts +30 -0
  133. package/dist/hooks/useSystemSettings.d.ts +47 -0
  134. package/dist/hooks/useThemeManager.d.ts +11 -0
  135. package/dist/hooks/useTotp.d.ts +52 -0
  136. package/dist/hooks/useTotpVerify.d.ts +38 -0
  137. package/dist/hooks/useTransactionSigning.d.ts +45 -0
  138. package/dist/hooks/useWallet.d.ts +10 -0
  139. package/dist/hooks/useWalletDiscovery.d.ts +24 -0
  140. package/dist/hooks/useWalletEnrollment.d.ts +9 -0
  141. package/dist/hooks/useWalletMaterial.d.ts +10 -0
  142. package/dist/hooks/useWalletRecovery.d.ts +9 -0
  143. package/dist/hooks/useWalletSigning.d.ts +31 -0
  144. package/dist/hooks/useWebAuthn.d.ts +25 -0
  145. package/dist/i18n/I18nProvider.d.ts +16 -0
  146. package/dist/i18n/context.d.ts +6 -0
  147. package/dist/i18n/index.d.ts +5 -0
  148. package/dist/i18n/translations.d.ts +66 -0
  149. package/dist/i18n/useI18n.d.ts +9 -0
  150. package/dist/index.cjs +2061 -0
  151. package/dist/index.cjs.map +1 -0
  152. package/dist/index.d.ts +126 -0
  153. package/dist/index.js +14910 -0
  154. package/dist/index.js.map +1 -0
  155. package/dist/login-react.css +1 -0
  156. package/dist/solana-only.cjs +1 -0
  157. package/dist/solana-only.cjs.map +1 -0
  158. package/dist/solana-only.d.ts +13 -0
  159. package/dist/solana-only.js +11 -0
  160. package/dist/solana-only.js.map +1 -0
  161. package/dist/style.cjs +1 -0
  162. package/dist/style.cjs.map +1 -0
  163. package/dist/style.js +1 -0
  164. package/dist/style.js.map +1 -0
  165. package/dist/types/adminUser.d.ts +112 -0
  166. package/dist/types/auth.d.ts +122 -0
  167. package/dist/types/config.d.ts +266 -0
  168. package/dist/types/deposit.d.ts +488 -0
  169. package/dist/types/index.d.ts +11 -0
  170. package/dist/types/invite.d.ts +71 -0
  171. package/dist/types/member.d.ts +45 -0
  172. package/dist/types/org.d.ts +101 -0
  173. package/dist/types/session.d.ts +28 -0
  174. package/dist/types/systemSettings.d.ts +81 -0
  175. package/dist/types/totp.d.ts +52 -0
  176. package/dist/types/wallet.d.ts +309 -0
  177. package/dist/utils/adminUserApi.d.ts +51 -0
  178. package/dist/utils/apiClient.d.ts +78 -0
  179. package/dist/utils/cryptoShim.d.ts +17 -0
  180. package/dist/utils/csrf.d.ts +1 -0
  181. package/dist/utils/deviceDetection.d.ts +17 -0
  182. package/dist/utils/embeddedWallet.d.ts +75 -0
  183. package/dist/utils/inviteApi.d.ts +31 -0
  184. package/dist/utils/memberApi.d.ts +23 -0
  185. package/dist/utils/orgApi.d.ts +36 -0
  186. package/dist/utils/sanitization.d.ts +66 -0
  187. package/dist/utils/sessionApi.d.ts +16 -0
  188. package/dist/utils/silentWalletEnroll.d.ts +41 -0
  189. package/dist/utils/systemSettingsApi.d.ts +18 -0
  190. package/dist/utils/tabSync.d.ts +46 -0
  191. package/dist/utils/tokenManager.d.ts +107 -0
  192. package/dist/utils/unlockCredential.d.ts +5 -0
  193. package/dist/utils/validation.d.ts +48 -0
  194. package/dist/utils/walletDetection.d.ts +23 -0
  195. package/dist/utils/webauthnJson.d.ts +21 -0
  196. package/dist/validation-BeXIfuHB.cjs +1 -0
  197. package/dist/validation-BeXIfuHB.cjs.map +1 -0
  198. package/dist/validation-BebL7hMF.js +56 -0
  199. package/dist/validation-BebL7hMF.js.map +1 -0
  200. package/package.json +109 -0
@@ -0,0 +1,23 @@
1
+ export interface MenuItemConfig {
2
+ /** Label to display */
3
+ label: string;
4
+ /** Click handler */
5
+ onClick: () => void;
6
+ /** Optional icon element */
7
+ icon?: React.ReactNode;
8
+ }
9
+ export interface LoginButtonProps {
10
+ className?: string;
11
+ variant?: 'default' | 'outline' | 'ghost';
12
+ size?: 'sm' | 'md' | 'lg';
13
+ children?: React.ReactNode;
14
+ /** Custom menu items to show above "Sign out" */
15
+ menuItems?: MenuItemConfig[];
16
+ /** Hide the default "Sign out" item (default: false) */
17
+ hideSignOut?: boolean;
18
+ }
19
+ /**
20
+ * Login button that opens the login modal when clicked.
21
+ * Shows user info when authenticated.
22
+ */
23
+ export declare function LoginButton({ className, variant, size, children, menuItems, hideSignOut, }: LoginButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ export interface LoginFormProps {
2
+ onSuccess?: () => void;
3
+ className?: string;
4
+ defaultTab?: 'login' | 'register';
5
+ }
6
+ /**
7
+ * Combined login form with all enabled auth methods
8
+ */
9
+ export declare function LoginForm({ onSuccess, className, defaultTab }: LoginFormProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ export interface LoginModalProps {
2
+ className?: string;
3
+ title?: string;
4
+ }
5
+ /**
6
+ * Modal containing the login form.
7
+ * Controlled by the CedrosLoginProvider context.
8
+ */
9
+ export declare function LoginModal({ className, title }: LoginModalProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,21 @@
1
+ import { AdminUser } from '../../types';
2
+ export interface AdminUserDetailProps {
3
+ /** User ID to display */
4
+ userId: string;
5
+ /** Callback when back button is clicked */
6
+ onBack: () => void;
7
+ /** Current user's ID (to prevent self-demotion) */
8
+ currentUserId?: string;
9
+ /** Callback when edit is clicked (parent handles modal) */
10
+ onEditUser?: (user: AdminUser) => void;
11
+ /** Callback when credits adjustment is clicked (parent handles modal) */
12
+ onAdjustCredits?: (user: AdminUser) => void;
13
+ /** Additional CSS classes */
14
+ className?: string;
15
+ }
16
+ /**
17
+ * Admin user detail display
18
+ *
19
+ * Shows comprehensive user information with deposit and credit history.
20
+ */
21
+ export declare function AdminUserDetail({ userId, onBack, currentUserId, onEditUser, onAdjustCredits, className, }: AdminUserDetailProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,25 @@
1
+ import { AdminUser, ListAdminUsersResponse } from '../../types';
2
+ export interface AdminUserListProps {
3
+ /** Number of items per page (default: 20) */
4
+ pageSize?: number;
5
+ /** Auto-refresh interval in milliseconds (0 to disable) */
6
+ refreshInterval?: number;
7
+ /** Current user's ID (to prevent self-demotion) */
8
+ currentUserId?: string;
9
+ /** Additional CSS classes */
10
+ className?: string;
11
+ /** Callback when list is loaded */
12
+ onLoad?: (response: ListAdminUsersResponse) => void;
13
+ /** Callback when a user is clicked */
14
+ onUserClick?: (user: AdminUser) => void;
15
+ /** Callback when edit is clicked (parent handles modal) */
16
+ onEditUser?: (user: AdminUser) => void;
17
+ /** Callback when credits adjustment is clicked (parent handles modal) */
18
+ onAdjustCredits?: (user: AdminUser) => void;
19
+ }
20
+ /**
21
+ * Admin user list display
22
+ *
23
+ * Shows all registered users with their auth methods and admin status.
24
+ */
25
+ export declare function AdminUserList({ pageSize, refreshInterval, currentUserId, className, onLoad, onUserClick, onEditUser, onAdjustCredits, }: AdminUserListProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Unified Admin Dashboard
3
+ *
4
+ * A complete, ready-to-use admin panel following shadcn/ui dashboard patterns.
5
+ *
6
+ * @example
7
+ * ```tsx
8
+ * // Minimal setup - everything included
9
+ * function AdminPage() {
10
+ * return <CedrosAdminDashboard />;
11
+ * }
12
+ *
13
+ * // Customized sections
14
+ * function AdminPage() {
15
+ * return (
16
+ * <CedrosAdminDashboard
17
+ * sections={['overview', 'members', 'deposits', 'settings']}
18
+ * title="My App Admin"
19
+ * />
20
+ * );
21
+ * }
22
+ * ```
23
+ */
24
+ /** Available dashboard sections */
25
+ export type DashboardSection = 'overview' | 'users' | 'members' | 'invites' | 'deposits' | 'withdrawals' | 'settings';
26
+ export interface CedrosAdminDashboardProps {
27
+ /** Dashboard title */
28
+ title?: string;
29
+ /** Sections to display (defaults to all) */
30
+ sections?: DashboardSection[];
31
+ /** Initial active section */
32
+ defaultSection?: DashboardSection;
33
+ /** Auto-refresh interval for stats in ms (0 to disable) */
34
+ refreshInterval?: number;
35
+ /** Items per page for lists */
36
+ pageSize?: number;
37
+ /** Callback when section changes */
38
+ onSectionChange?: (section: DashboardSection) => void;
39
+ /** Additional CSS class */
40
+ className?: string;
41
+ }
42
+ /**
43
+ * Unified Admin Dashboard
44
+ *
45
+ * Provides a complete admin interface with sidebar navigation.
46
+ * Follows shadcn/ui dashboard patterns.
47
+ */
48
+ export declare function CedrosAdminDashboard({ title, sections, defaultSection, refreshInterval, pageSize, onSectionChange, className, }: CedrosAdminDashboardProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,19 @@
1
+ export interface SystemSettingsProps {
2
+ /** Whether to show section descriptions */
3
+ showDescriptions?: boolean;
4
+ /** Additional CSS class */
5
+ className?: string;
6
+ /** Callback when settings are saved */
7
+ onSave?: () => void;
8
+ }
9
+ /**
10
+ * System settings management component for administrators.
11
+ *
12
+ * Features:
13
+ * - Duration inputs with human-readable display
14
+ * - Percentage sliders
15
+ * - Preset dropdown selectors
16
+ * - Warning indicators for extreme values
17
+ * - Rich descriptions for each setting
18
+ */
19
+ export declare function SystemSettings({ showDescriptions, className, onSave, }: SystemSettingsProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ export interface AppleLoginButtonProps {
2
+ onSuccess?: () => void;
3
+ onError?: (error: Error) => void;
4
+ className?: string;
5
+ variant?: 'default' | 'outline';
6
+ size?: 'sm' | 'md' | 'lg';
7
+ disabled?: boolean;
8
+ /**
9
+ * Hide the button on non-Apple devices (macOS, iOS, iPadOS).
10
+ * When true (default), button only renders on Apple devices.
11
+ * When false, button always renders regardless of device.
12
+ * @default true
13
+ */
14
+ hideOnNonApple?: boolean;
15
+ }
16
+ /**
17
+ * Apple Sign In button
18
+ *
19
+ * Requires `appleClientId` to be configured in CedrosLoginProvider.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * <AppleLoginButton
24
+ * onSuccess={() => console.log('Logged in!')}
25
+ * onError={(err) => console.error(err)}
26
+ * />
27
+ * ```
28
+ */
29
+ export declare function AppleLoginButton({ onSuccess, onError, className, variant, size, disabled, hideOnNonApple, }: AppleLoginButtonProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,19 @@
1
+ import { CreditBalanceResponse } from '../../types/deposit';
2
+ export interface CreditBalanceProps {
3
+ /** Show only SOL balance (default) or all currencies */
4
+ showAllCurrencies?: boolean;
5
+ /** Auto-refresh interval in milliseconds (0 to disable) */
6
+ refreshInterval?: number;
7
+ /** Compact display mode */
8
+ compact?: boolean;
9
+ /** Additional CSS classes */
10
+ className?: string;
11
+ /** Callback when balance is loaded */
12
+ onLoad?: (balance: CreditBalanceResponse[]) => void;
13
+ }
14
+ /**
15
+ * Credit balance display
16
+ *
17
+ * Shows the user's credit balance. Supports auto-refresh.
18
+ */
19
+ export declare function CreditBalance({ showAllCurrencies, refreshInterval, compact, className, onLoad, }: CreditBalanceProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,118 @@
1
+ import { Token } from './tokens';
2
+ import { DepositResponse, DepositConfigResponse } from '../../types/deposit';
3
+ /** Currency configuration mode */
4
+ export type CurrencyMode = 'sol' | 'single-token' | 'multi-token';
5
+ /** Deposit method - how the user will deposit funds */
6
+ export type DepositMethod = 'sign' | 'receive';
7
+ /** Flow step */
8
+ export type DepositFlowStep = 'explainer' | 'unlock' | 'confirm' | 'signing' | 'show-address' | 'waiting' | 'success' | 'error';
9
+ /** Configuration for the optional explainer step */
10
+ export interface ExplainerConfig {
11
+ /** Custom title (default: "How Deposits Work") */
12
+ title?: string;
13
+ /** Custom body text (default explains Solana and suggests exchange) */
14
+ body?: string;
15
+ /** Exchange URL (default: "https://www.coinbase.com") */
16
+ exchangeUrl?: string;
17
+ /** Exchange name (default: "Coinbase") */
18
+ exchangeName?: string;
19
+ /** Whether to show the exchange suggestion (default: true) */
20
+ showExchangeSuggestion?: boolean;
21
+ }
22
+ export interface DepositFlowProps {
23
+ /** Deposit configuration (required) */
24
+ config: DepositConfigResponse;
25
+ /**
26
+ * Currency mode determines what tokens users can deposit:
27
+ * - 'sol': SOL only (no token selection step)
28
+ * - 'single-token': Single admin-configured token (shows token info, no selection)
29
+ * - 'multi-token': User selects from available tokens
30
+ */
31
+ currencyMode: CurrencyMode;
32
+ /**
33
+ * Deposit method determines how the user deposits:
34
+ * - 'sign': User has a connected wallet and signs transactions (default for browser wallets)
35
+ * - 'receive': User sends from external source (exchange) to deposit address (embedded wallet)
36
+ *
37
+ * If not specified, auto-detects based on wallet status:
38
+ * - If user has external wallet connected → 'sign'
39
+ * - If user has embedded wallet only → 'receive'
40
+ */
41
+ depositMethod?: DepositMethod;
42
+ /**
43
+ * Available tokens for single-token or multi-token modes.
44
+ * For single-token mode, only the first token is used.
45
+ * Ignored in 'sol' mode.
46
+ */
47
+ tokens?: Token[];
48
+ /** Pre-selected token (for multi-token mode) */
49
+ defaultToken?: Token;
50
+ /** Minimum deposit amount (overrides server config) */
51
+ minAmount?: number;
52
+ /** Maximum deposit amount */
53
+ maxAmount?: number;
54
+ /** Callback on successful deposit */
55
+ onSuccess?: (result: DepositFlowResult) => void;
56
+ /** Callback on error */
57
+ onError?: (error: Error) => void;
58
+ /** Callback when user cancels */
59
+ onCancel?: () => void;
60
+ /** Callback to request wallet unlock */
61
+ onUnlockRequired?: () => void;
62
+ /**
63
+ * Callback to authorize deposit with password/PIN.
64
+ * This sends the password to the server to decrypt Share B for withdrawal signing.
65
+ * Returns the session ID for tracking the deposit.
66
+ *
67
+ * For sign mode: amount is the user-entered deposit amount
68
+ * For receive mode: amount is 0 (auto-detected when deposit arrives)
69
+ */
70
+ onAuthorize?: (password: string, amount: number | null, token: Token) => Promise<{
71
+ sessionId: string;
72
+ depositAddress: string;
73
+ }>;
74
+ /** Additional CSS classes */
75
+ className?: string;
76
+ /** Show step indicator */
77
+ showStepIndicator?: boolean;
78
+ /** Polling interval for checking deposit status in receive mode (ms, default: 5000) */
79
+ pollInterval?: number;
80
+ /** Demo mode - skips wallet checks for Storybook/testing (default: false) */
81
+ demoMode?: boolean;
82
+ /** Demo mode auto-confirm delay in ms (storybook only) */
83
+ demoAutoConfirmMs?: number;
84
+ /** USD price overrides for non-USD tokens (by symbol) */
85
+ tokenPriceUsd?: Record<string, number>;
86
+ /**
87
+ * Show an optional explainer step for non-crypto-native users.
88
+ * This explains Solana and suggests an exchange for purchasing.
89
+ * Admin-controlled setting (default: false)
90
+ */
91
+ showExplainer?: boolean;
92
+ /** Site name to display in explainer (e.g., "Acme Inc") */
93
+ siteName?: string;
94
+ /** Configuration for the explainer step content */
95
+ explainerConfig?: ExplainerConfig;
96
+ }
97
+ export interface DepositFlowResult {
98
+ /** Selected token (null for SOL) */
99
+ token: Token | null;
100
+ /** Amount in token units */
101
+ amount: number;
102
+ /** Amount in lamports (for SOL) or smallest unit */
103
+ amountSmallestUnit: number;
104
+ /** Transaction signature (for sign mode) */
105
+ txSignature: string;
106
+ /** Session ID for tracking */
107
+ sessionId: string;
108
+ /** Deposit response from server */
109
+ response: DepositResponse;
110
+ /** Deposit method used */
111
+ method: DepositMethod;
112
+ /** Deposit address (for receive mode) */
113
+ depositAddress?: string;
114
+ }
115
+ /**
116
+ * Multi-step deposit flow component
117
+ */
118
+ export declare function DepositFlow({ config, currencyMode, depositMethod: depositMethodProp, tokens, defaultToken, minAmount, maxAmount, onSuccess, onError, onCancel, onUnlockRequired, onAuthorize, className, showStepIndicator, pollInterval, demoMode, demoAutoConfirmMs, tokenPriceUsd, showExplainer, siteName, explainerConfig, }: DepositFlowProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { DepositConfigResponse } from '../../types/deposit';
2
+ export interface FeeConfigDisplayProps {
3
+ /** Deposit configuration with fee settings */
4
+ config: DepositConfigResponse;
5
+ /** Show detailed fee breakdown (default: true) */
6
+ showBreakdown?: boolean;
7
+ /** Show tier-specific context (which fees apply to which tier) */
8
+ showTierContext?: boolean;
9
+ /** Additional CSS classes */
10
+ className?: string;
11
+ }
12
+ /**
13
+ * Fee configuration display with warnings
14
+ */
15
+ export declare function FeeConfigDisplay({ config, showBreakdown, showTierContext, className, }: FeeConfigDisplayProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { CreditTransactionResponse, CreditHistoryResponse } from '../../types/deposit';
2
+ /** History tab category for filtering */
3
+ export type HistoryCategory = 'all' | 'deposits' | 'usage' | 'adjustments';
4
+ export interface HistoryProps {
5
+ /** Initially selected tab (default: 'all') */
6
+ defaultTab?: HistoryCategory;
7
+ /** Number of items per page (default: 10) */
8
+ pageSize?: number;
9
+ /** Auto-refresh interval in milliseconds (0 to disable) */
10
+ refreshInterval?: number;
11
+ /** Additional CSS classes */
12
+ className?: string;
13
+ /** Callback when history is loaded */
14
+ onLoad?: (history: CreditHistoryResponse) => void;
15
+ /** Callback when a transaction is clicked */
16
+ onTransactionClick?: (transaction: CreditTransactionResponse) => void;
17
+ }
18
+ /**
19
+ * History component with tabs
20
+ */
21
+ export declare function History({ defaultTab, pageSize, refreshInterval, className, onLoad, onTransactionClick, }: HistoryProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import { DepositConfigResponse } from '../../types/deposit';
2
+ export interface TieredAmountSliderProps {
3
+ /** Deposit configuration with tier thresholds */
4
+ config: DepositConfigResponse;
5
+ /** Current amount in USD */
6
+ valueUsd: number;
7
+ /** Amount change handler */
8
+ onChange: (valueUsd: number) => void;
9
+ /** Cap in USD (default: 10000) */
10
+ maxUsd?: number;
11
+ /** Disabled state */
12
+ disabled?: boolean;
13
+ /** Additional CSS classes */
14
+ className?: string;
15
+ }
16
+ /**
17
+ * Tiered amount input with deposit tier indicator
18
+ */
19
+ export declare function TieredAmountSlider({ config, valueUsd, onChange, maxUsd, disabled, className, }: TieredAmountSliderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,23 @@
1
+ import { Token } from './tokens';
2
+ export interface TokenSelectorProps {
3
+ /** List of available tokens */
4
+ tokens: Token[];
5
+ /** Currently selected token */
6
+ selectedToken?: Token;
7
+ /** Callback when token is selected */
8
+ onSelect: (token: Token) => void;
9
+ /** Signal to force-open the dropdown */
10
+ openSignal?: number;
11
+ /** Placeholder text when no token selected */
12
+ placeholder?: string;
13
+ /** Disable the selector */
14
+ disabled?: boolean;
15
+ /** Additional CSS classes */
16
+ className?: string;
17
+ /** Show search input */
18
+ searchable?: boolean;
19
+ }
20
+ /**
21
+ * Token selector dropdown component
22
+ */
23
+ export declare function TokenSelector({ tokens, selectedToken, onSelect, openSignal, placeholder, disabled, className, searchable, }: TokenSelectorProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { AdminDepositItem, AdminDepositListResponse } from '../../../types/deposit';
2
+ export interface AdminDepositListProps {
3
+ /** Filter by status (comma-separated) */
4
+ statusFilter?: string;
5
+ /** Number of items per page (default: 20) */
6
+ pageSize?: number;
7
+ /** Auto-refresh interval in milliseconds (0 to disable) */
8
+ refreshInterval?: number;
9
+ /** Additional CSS classes */
10
+ className?: string;
11
+ /** Callback when list is loaded */
12
+ onLoad?: (response: AdminDepositListResponse) => void;
13
+ /** Callback when a deposit is clicked */
14
+ onDepositClick?: (deposit: AdminDepositItem) => void;
15
+ }
16
+ /**
17
+ * Admin deposit list display
18
+ *
19
+ * Shows paginated list of all deposits with user info.
20
+ */
21
+ export declare function AdminDepositList({ statusFilter, pageSize, refreshInterval, className, onLoad, onDepositClick, }: AdminDepositListProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { AdminDepositStatsResponse } from '../../../types/deposit';
2
+ export interface AdminDepositStatsProps {
3
+ /** Auto-refresh interval in milliseconds (0 to disable) */
4
+ refreshInterval?: number;
5
+ /** Additional CSS classes */
6
+ className?: string;
7
+ /** Callback when stats are loaded */
8
+ onLoad?: (stats: AdminDepositStatsResponse) => void;
9
+ }
10
+ /**
11
+ * Admin deposit statistics display
12
+ *
13
+ * Shows total deposits, withdrawals, and pending amounts.
14
+ */
15
+ export declare function AdminDepositStats({ refreshInterval, className, onLoad, }: AdminDepositStatsProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,19 @@
1
+ import { AdminDepositItem, AdminDepositListResponse } from '../../../types/deposit';
2
+ export interface AdminPrivacyPeriodDepositsProps {
3
+ /** Number of items per page (default: 20) */
4
+ pageSize?: number;
5
+ /** Auto-refresh interval in milliseconds (0 to disable) */
6
+ refreshInterval?: number;
7
+ /** Additional CSS classes */
8
+ className?: string;
9
+ /** Callback when list is loaded */
10
+ onLoad?: (response: AdminDepositListResponse) => void;
11
+ /** Callback when a deposit item is clicked */
12
+ onItemClick?: (item: AdminDepositItem) => void;
13
+ }
14
+ /**
15
+ * Admin privacy period deposits display
16
+ *
17
+ * Shows deposits that are still in the privacy period (not yet available for withdrawal).
18
+ */
19
+ export declare function AdminPrivacyPeriodDeposits({ pageSize, refreshInterval, className, onLoad, onItemClick, }: AdminPrivacyPeriodDepositsProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import { AdminDepositItem, AdminDepositListResponse } from '../../../types/deposit';
2
+ export interface AdminWithdrawalHistoryProps {
3
+ /** Number of items per page (default: 20) */
4
+ pageSize?: number;
5
+ /** Auto-refresh interval in milliseconds (0 to disable) */
6
+ refreshInterval?: number;
7
+ /** Additional CSS classes */
8
+ className?: string;
9
+ /** Callback when list is loaded */
10
+ onLoad?: (response: AdminDepositListResponse) => void;
11
+ /** Callback when a withdrawal item is clicked */
12
+ onItemClick?: (item: AdminDepositItem) => void;
13
+ }
14
+ /**
15
+ * Admin withdrawal history display
16
+ *
17
+ * Shows deposits that have been fully withdrawn.
18
+ */
19
+ export declare function AdminWithdrawalHistory({ pageSize, refreshInterval, className, onLoad, onItemClick, }: AdminWithdrawalHistoryProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,23 @@
1
+ import { AdminDepositItem, AdminDepositListResponse, ProcessWithdrawalResponse, ProcessAllWithdrawalsResponse } from '../../../types/deposit';
2
+ export interface AdminWithdrawalQueueProps {
3
+ /** Number of items per page (default: 20) */
4
+ pageSize?: number;
5
+ /** Auto-refresh interval in milliseconds (0 to disable) */
6
+ refreshInterval?: number;
7
+ /** Additional CSS classes */
8
+ className?: string;
9
+ /** Callback when list is loaded */
10
+ onLoad?: (response: AdminDepositListResponse) => void;
11
+ /** Callback when a withdrawal item is clicked */
12
+ onItemClick?: (item: AdminDepositItem) => void;
13
+ /** Callback when a withdrawal is processed */
14
+ onWithdrawalProcessed?: (response: ProcessWithdrawalResponse) => void;
15
+ /** Callback when all withdrawals are processed */
16
+ onAllProcessed?: (response: ProcessAllWithdrawalsResponse) => void;
17
+ }
18
+ /**
19
+ * Admin withdrawal queue display
20
+ *
21
+ * Shows deposits ready for withdrawal processing with action buttons.
22
+ */
23
+ export declare function AdminWithdrawalQueue({ pageSize, refreshInterval, className, onLoad, onItemClick, onWithdrawalProcessed, onAllProcessed, }: AdminWithdrawalQueueProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { PrivacyStatusResponse } from '../../../types/deposit';
2
+ export interface PrivacySystemStatusProps {
3
+ /** Auto-refresh interval in milliseconds (0 to disable) */
4
+ refreshInterval?: number;
5
+ /** Additional CSS classes */
6
+ className?: string;
7
+ /** Callback when status is loaded */
8
+ onLoad?: (status: PrivacyStatusResponse) => void;
9
+ }
10
+ /**
11
+ * Privacy Cash system status display
12
+ *
13
+ * Shows configuration including partial withdrawal settings for timing analysis protection.
14
+ */
15
+ export declare function PrivacySystemStatus({ refreshInterval, className, onLoad, }: PrivacySystemStatusProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Admin deposit components
3
+ *
4
+ * Components for system administrators to manage Privacy Cash deposits.
5
+ */
6
+ export { AdminDepositStats } from './AdminDepositStats';
7
+ export type { AdminDepositStatsProps } from './AdminDepositStats';
8
+ export { AdminDepositList } from './AdminDepositList';
9
+ export type { AdminDepositListProps } from './AdminDepositList';
10
+ export { AdminWithdrawalQueue } from './AdminWithdrawalQueue';
11
+ export type { AdminWithdrawalQueueProps } from './AdminWithdrawalQueue';
12
+ export { AdminPrivacyPeriodDeposits } from './AdminPrivacyPeriodDeposits';
13
+ export type { AdminPrivacyPeriodDepositsProps } from './AdminPrivacyPeriodDeposits';
14
+ export { AdminWithdrawalHistory } from './AdminWithdrawalHistory';
15
+ export type { AdminWithdrawalHistoryProps } from './AdminWithdrawalHistory';
16
+ export { PrivacySystemStatus } from './PrivacySystemStatus';
17
+ export type { PrivacySystemStatusProps } from './PrivacySystemStatus';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Deposit components for Privacy Cash integration
3
+ */
4
+ export { DepositFlow, type DepositFlowProps, type DepositFlowResult, type CurrencyMode, type DepositMethod, type DepositFlowStep, type ExplainerConfig, } from './DepositFlow';
5
+ export { TokenSelector, type TokenSelectorProps } from './TokenSelector';
6
+ export { SUPPORTED_TOKENS, type Token } from './tokens';
7
+ export { TieredAmountSlider, type TieredAmountSliderProps } from './TieredAmountSlider';
8
+ export { getTierForAmount } from './tierUtils';
9
+ export { FeeConfigDisplay, type FeeConfigDisplayProps } from './FeeConfigDisplay';
10
+ export { CreditBalance, type CreditBalanceProps } from './CreditBalance';
11
+ export { History, type HistoryProps, type HistoryCategory } from './History';
12
+ export { AdminDepositStats, type AdminDepositStatsProps, AdminDepositList, type AdminDepositListProps, AdminWithdrawalQueue, type AdminWithdrawalQueueProps, } from './admin';
@@ -0,0 +1,8 @@
1
+ import { DepositConfigResponse, DepositTier } from '../../types/deposit';
2
+ /**
3
+ * Determine which tier an amount falls into
4
+ *
5
+ * When private deposits are disabled (recovery mode enabled), the 'private'
6
+ * tier is not available and amounts that would qualify for it fall back to 'public'.
7
+ */
8
+ export declare function getTierForAmount(usd: number, config: DepositConfigResponse): DepositTier;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Token types and constants for deposit currency selection
3
+ */
4
+ export interface Token {
5
+ /** Token mint address */
6
+ mint: string;
7
+ /** Token symbol (e.g., SOL, USDC) */
8
+ symbol: string;
9
+ /** Token name (e.g., Solana, USD Coin) */
10
+ name: string;
11
+ /** Token decimals */
12
+ decimals: number;
13
+ /** Token logo URL */
14
+ logoUrl?: string;
15
+ }
16
+ /**
17
+ * Supported stablecoins for deposits
18
+ */
19
+ export declare const SUPPORTED_TOKENS: Token[];
@@ -0,0 +1,11 @@
1
+ export interface EmailLoginFormProps {
2
+ onSuccess?: () => void;
3
+ onSwitchToRegister?: () => void;
4
+ /** Called when user clicks "Forgot password?" (only in 'reset' mode) */
5
+ onForgotPassword?: () => void;
6
+ className?: string;
7
+ }
8
+ /**
9
+ * Email/password login form
10
+ */
11
+ export declare function EmailLoginForm({ onSuccess, onSwitchToRegister, onForgotPassword, className, }: EmailLoginFormProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ export interface EmailRegisterFormProps {
2
+ onSuccess?: () => void;
3
+ onSwitchToLogin?: () => void;
4
+ className?: string;
5
+ }
6
+ /** Values collected from the registration form (for callback) */
7
+ export interface RegistrationData {
8
+ termsAccepted: boolean;
9
+ emailOptIn: boolean;
10
+ }
11
+ /**
12
+ * Email/password registration form
13
+ */
14
+ export declare function EmailRegisterForm({ onSuccess, onSwitchToLogin, className, }: EmailRegisterFormProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ export interface ForgotPasswordFormProps {
2
+ onSuccess?: () => void;
3
+ onCancel?: () => void;
4
+ className?: string;
5
+ }
6
+ /**
7
+ * Form for requesting a password reset email.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * <ForgotPasswordForm
12
+ * onSuccess={() => console.log('Email sent!')}
13
+ * onCancel={() => setShowForgotPassword(false)}
14
+ * />
15
+ * ```
16
+ */
17
+ export declare function ForgotPasswordForm({ onSuccess, onCancel, className, }: ForgotPasswordFormProps): import("react/jsx-runtime").JSX.Element;