@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,488 @@
1
+ /**
2
+ * Types for Privacy Cash deposits and credits
3
+ */
4
+ /** Request to execute a privacy deposit */
5
+ export interface DepositRequest {
6
+ /** Amount to deposit in lamports */
7
+ amountLamports: number;
8
+ }
9
+ /** Response from executing a privacy deposit */
10
+ export interface DepositResponse {
11
+ /** Session ID for tracking */
12
+ sessionId: string;
13
+ /** Transaction signature on Solana */
14
+ txSignature: string;
15
+ /** Amount deposited in lamports */
16
+ amountLamports: number;
17
+ /** Human-readable message */
18
+ message: string;
19
+ /** When withdrawal becomes available */
20
+ withdrawalAvailableAt: string;
21
+ }
22
+ /** Deposit session status */
23
+ export interface DepositStatusResponse {
24
+ sessionId: string;
25
+ status: 'pending' | 'detected' | 'processing' | 'completed' | 'withdrawn' | 'partially_withdrawn' | 'expired' | 'failed' | 'pending_batch' | 'batched';
26
+ walletAddress: string;
27
+ amountLamports: number | null;
28
+ txSignature?: string;
29
+ errorMessage?: string;
30
+ createdAt: string;
31
+ completedAt?: string;
32
+ withdrawalAvailableAt?: string;
33
+ }
34
+ /** Deposit tier type for tiered deposits */
35
+ export type DepositTier = 'private' | 'public' | 'sol_micro';
36
+ /** Fee policy options - who pays the deposit fees */
37
+ export type FeePolicy = 'company_pays_all' | 'user_pays_swap' | 'user_pays_privacy' | 'user_pays_all';
38
+ /** Custom token definition from admin settings */
39
+ export interface CustomTokenDefinition {
40
+ /** Token symbol (e.g., "MYTOKEN") */
41
+ symbol: string;
42
+ /** Solana mint address */
43
+ mint: string;
44
+ /** Token decimals (e.g., 6 for USDC, 9 for SOL) */
45
+ decimals: number;
46
+ /** Optional logo URL */
47
+ logoUrl?: string;
48
+ }
49
+ /** Deposit configuration with tiered thresholds */
50
+ export interface DepositConfigResponse {
51
+ /** Whether deposits are enabled */
52
+ enabled: boolean;
53
+ /** Whether private deposits are available (false if recovery mode is enabled) */
54
+ privateDepositsEnabled: boolean;
55
+ /** Privacy period in seconds (time before withdrawal to company wallet) */
56
+ privacyPeriodSecs: number;
57
+ /** Company wallet address (destination for public/micro deposits) */
58
+ companyWallet: string;
59
+ /** Company's preferred currency (e.g., "USDC") */
60
+ companyCurrency: string;
61
+ /** Current SOL price in USD (cached, ~30s TTL) */
62
+ solPriceUsd: number;
63
+ /** Token prices in USD (symbol -> price), fetched from Jupiter */
64
+ tokenPrices: Record<string, number>;
65
+ /** Minimum SOL for private deposits (default: 0.25 SOL) */
66
+ privateMinSol: number;
67
+ /** USD equivalent of privateMinSol (rounded up to nearest $5) */
68
+ privateMinUsd: number;
69
+ /** Minimum USD for public deposits (Jupiter minimum: $10) */
70
+ publicMinUsd: number;
71
+ /** Maximum USD for SOL micro deposits (same as publicMinUsd: $10) */
72
+ solMicroMaxUsd: number;
73
+ /** Supported currencies for deposits */
74
+ supportedCurrencies: string[];
75
+ /** Token symbols shown as quick actions in the deposit flow */
76
+ quickActionTokens: string[];
77
+ /** Token symbols shown in the custom token list */
78
+ customTokenSymbols: string[];
79
+ /** Treasury wallet address for micro deposits (undefined if no treasury configured) */
80
+ microDepositAddress?: string;
81
+ /** Batch threshold in USD before executing Jupiter swap */
82
+ microBatchThresholdUsd: number;
83
+ /** Fee policy: who pays deposit fees */
84
+ feePolicy: FeePolicy;
85
+ /** Privacy Cash fee percentage (e.g., 0.35 for 0.35%) */
86
+ privacyFeePercent: number;
87
+ /** Privacy Cash fixed fee in lamports */
88
+ privacyFeeFixedLamports: number;
89
+ /** Swap fee percentage (e.g., 0.1 for 0.1%) */
90
+ swapFeePercent: number;
91
+ /** Swap fixed fee in lamports */
92
+ swapFeeFixedLamports: number;
93
+ /** Company processing fee percentage (e.g., 0.05 for 0.05%, default: 0) */
94
+ companyFeePercent: number;
95
+ /** Company processing fixed fee in lamports (default: 0) */
96
+ companyFeeFixedLamports: number;
97
+ /** Custom token definitions from admin settings */
98
+ customTokens?: CustomTokenDefinition[];
99
+ }
100
+ /** Swap quote response from GET /deposit/quote */
101
+ export interface DepositQuoteResponse {
102
+ inputMint: string;
103
+ outputMint: string;
104
+ inAmount: string;
105
+ outAmount: string;
106
+ inUsdValue?: number;
107
+ outUsdValue?: number;
108
+ slippageBps?: number;
109
+ /** Base64-encoded unsigned transaction to sign */
110
+ transaction: string;
111
+ /** Pass this back to POST /deposit/public */
112
+ requestId: string;
113
+ }
114
+ /** Request for POST /deposit/public */
115
+ export interface PublicDepositRequest {
116
+ signedTransaction: string;
117
+ requestId: string;
118
+ inputMint: string;
119
+ inputAmount: number;
120
+ walletAddress: string;
121
+ }
122
+ /** Request for POST /deposit/micro */
123
+ export interface MicroDepositRequest {
124
+ txSignature: string;
125
+ amountLamports: number;
126
+ walletAddress: string;
127
+ }
128
+ /** Response from tiered deposit endpoints */
129
+ export interface TieredDepositResponse {
130
+ sessionId: string;
131
+ txSignature: string;
132
+ message: string;
133
+ depositType: DepositTier;
134
+ }
135
+ /** Individual deposit item in list response */
136
+ export interface DepositItemResponse {
137
+ sessionId: string;
138
+ status: 'pending' | 'detected' | 'processing' | 'completed' | 'withdrawn' | 'partially_withdrawn' | 'expired' | 'failed';
139
+ amountLamports: number | null;
140
+ txSignature?: string;
141
+ withdrawalTxSignature?: string;
142
+ createdAt: string;
143
+ completedAt?: string;
144
+ withdrawalAvailableAt?: string;
145
+ }
146
+ /** Deposit list response with pagination */
147
+ export interface DepositListResponse {
148
+ deposits: DepositItemResponse[];
149
+ total: number;
150
+ limit: number;
151
+ offset: number;
152
+ }
153
+ /** Credit balance */
154
+ export interface CreditBalanceResponse {
155
+ /** Balance in lamports */
156
+ balanceLamports: number;
157
+ /** Currency (e.g., "SOL") */
158
+ currency: string;
159
+ /** Human-readable display (e.g., "0.5000 SOL") */
160
+ display: string;
161
+ }
162
+ /** Multiple balances response */
163
+ export interface BalancesResponse {
164
+ balances: CreditBalanceResponse[];
165
+ }
166
+ /** Credit transaction */
167
+ export interface CreditTransactionResponse {
168
+ id: string;
169
+ /** Amount in lamports (positive = credit, negative = debit) */
170
+ amountLamports: number;
171
+ currency: string;
172
+ /** Transaction type: "deposit", "spend", "adjustment" */
173
+ txType: string;
174
+ /** Human-readable description */
175
+ description: string;
176
+ depositSessionId?: string;
177
+ createdAt: string;
178
+ }
179
+ /** Credit history response with pagination */
180
+ export interface CreditHistoryResponse {
181
+ transactions: CreditTransactionResponse[];
182
+ total: number;
183
+ limit: number;
184
+ offset: number;
185
+ }
186
+ /** Return type for useDeposit hook */
187
+ export interface UseDepositReturn {
188
+ /** Execute a private deposit (Privacy Cash) */
189
+ deposit: (amountLamports: number) => Promise<DepositResponse>;
190
+ /** Get swap quote for public deposits */
191
+ getQuote: (params: {
192
+ inputMint: string;
193
+ amount: number;
194
+ taker: string;
195
+ }) => Promise<DepositQuoteResponse>;
196
+ /** Execute a public deposit (Jupiter swap to company wallet) */
197
+ publicDeposit: (request: PublicDepositRequest) => Promise<TieredDepositResponse>;
198
+ /** Execute a SOL micro deposit (direct transfer) */
199
+ microDeposit: (request: MicroDepositRequest) => Promise<TieredDepositResponse>;
200
+ /** Get deposit status */
201
+ getStatus: (sessionId: string) => Promise<DepositStatusResponse>;
202
+ /** Get deposit config */
203
+ getConfig: () => Promise<DepositConfigResponse>;
204
+ /** List deposits with pagination */
205
+ listDeposits: (options?: {
206
+ limit?: number;
207
+ offset?: number;
208
+ }) => Promise<DepositListResponse>;
209
+ /** Loading state */
210
+ isLoading: boolean;
211
+ /** Error message */
212
+ error: string | null;
213
+ /** Clear error */
214
+ clearError: () => void;
215
+ }
216
+ /** Admin deposit item (includes user info) */
217
+ export interface AdminDepositItem {
218
+ id: string;
219
+ userId: string;
220
+ walletAddress: string;
221
+ status: 'pending' | 'detected' | 'processing' | 'completed' | 'withdrawn' | 'partially_withdrawn' | 'expired' | 'failed';
222
+ amountLamports: number | null;
223
+ txSignature?: string;
224
+ withdrawalTxSignature?: string;
225
+ createdAt: string;
226
+ completedAt?: string;
227
+ withdrawalAvailableAt?: string;
228
+ errorMessage?: string;
229
+ }
230
+ /** Admin deposit list response */
231
+ export interface AdminDepositListResponse {
232
+ deposits: AdminDepositItem[];
233
+ total: number;
234
+ limit: number;
235
+ offset: number;
236
+ }
237
+ /** Admin deposit stats response */
238
+ export interface AdminDepositStatsResponse {
239
+ totalDeposits: number;
240
+ totalDepositedLamports: number;
241
+ totalDepositedSol: number;
242
+ pendingWithdrawalCount: number;
243
+ pendingWithdrawalLamports: number;
244
+ pendingWithdrawalSol: number;
245
+ totalWithdrawnCount: number;
246
+ totalWithdrawnLamports: number;
247
+ totalWithdrawnSol: number;
248
+ failedCount: number;
249
+ readyForWithdrawalCount: number;
250
+ readyForWithdrawalLamports: number;
251
+ readyForWithdrawalSol: number;
252
+ inPrivacyPeriodCount: number;
253
+ inPrivacyPeriodLamports: number;
254
+ inPrivacyPeriodSol: number;
255
+ usdcDepositCount: number;
256
+ totalUsdcInput: number;
257
+ totalUsdcDisplay: number;
258
+ usdtDepositCount: number;
259
+ totalUsdtInput: number;
260
+ totalUsdtDisplay: number;
261
+ nativeSolDepositCount: number;
262
+ totalNativeSolInput: number;
263
+ totalNativeSolDisplay: number;
264
+ }
265
+ /** Request to process a single withdrawal */
266
+ export interface ProcessWithdrawalRequest {
267
+ /** Force early withdrawal (before privacy period ends) */
268
+ force?: boolean;
269
+ }
270
+ /** Response from processing a single withdrawal */
271
+ export interface ProcessWithdrawalResponse {
272
+ success: boolean;
273
+ sessionId: string;
274
+ txSignature?: string;
275
+ error?: string;
276
+ /** True if this was an early withdrawal (before privacy period) */
277
+ earlyWithdrawal: boolean;
278
+ }
279
+ /** Response from processing all withdrawals */
280
+ export interface ProcessAllWithdrawalsResponse {
281
+ totalProcessed: number;
282
+ totalSucceeded: number;
283
+ totalFailed: number;
284
+ results: ProcessWithdrawalResponse[];
285
+ }
286
+ /** Credit stats for a single currency */
287
+ export interface CurrencyCreditStatsResponse {
288
+ totalCredited: number;
289
+ totalSpent: number;
290
+ totalPositiveAdjustments: number;
291
+ totalNegativeAdjustments: number;
292
+ currentOutstanding: number;
293
+ depositCount: number;
294
+ spendCount: number;
295
+ adjustmentCount: number;
296
+ totalCreditedDisplay: number;
297
+ totalSpentDisplay: number;
298
+ currentOutstandingDisplay: number;
299
+ }
300
+ /** Admin credit stats response */
301
+ export interface AdminCreditStatsResponse {
302
+ sol: CurrencyCreditStatsResponse;
303
+ usd: CurrencyCreditStatsResponse;
304
+ totalUsersWithBalance: number;
305
+ totalOutstandingLamports: number;
306
+ totalOutstandingSol: number;
307
+ }
308
+ /** Privacy Cash system status response */
309
+ export interface PrivacyStatusResponse {
310
+ enabled: boolean;
311
+ companyWallet: string | null;
312
+ companyCurrency: string;
313
+ privacyPeriodSecs: number;
314
+ privacyPeriodDisplay: string;
315
+ minDepositLamports: number;
316
+ minDepositSol: number;
317
+ withdrawalPollIntervalSecs: number;
318
+ withdrawalBatchSize: number;
319
+ /** Percentage of ready funds to withdraw per cycle (1-100) */
320
+ withdrawalPercentage: number;
321
+ /** Minimum amount (lamports) to withdraw - smaller amounts are skipped */
322
+ withdrawalMinLamports: number;
323
+ /** Minimum amount (SOL) to withdraw */
324
+ withdrawalMinSol: number;
325
+ /** Maximum partial withdrawals per batch (0 = disabled) */
326
+ partialWithdrawalCount: number;
327
+ /** Minimum amount (lamports) for partial withdrawals */
328
+ partialWithdrawalMinLamports: number;
329
+ /** Minimum amount (SOL) for partial withdrawals */
330
+ partialWithdrawalMinSol: number;
331
+ sidecarStatus: string;
332
+ sidecarUrl: string;
333
+ webhookConfigured: boolean;
334
+ }
335
+ /** Return type for useAdminDeposits hook */
336
+ export interface UseAdminDepositsReturn {
337
+ /** List all deposits (admin) */
338
+ listDeposits: (options?: {
339
+ status?: string;
340
+ limit?: number;
341
+ offset?: number;
342
+ }) => Promise<AdminDepositListResponse>;
343
+ /** Get deposit statistics (admin) */
344
+ getStats: () => Promise<AdminDepositStatsResponse>;
345
+ /** List deposits in privacy period (completed but not yet ready for withdrawal) */
346
+ listInPrivacyPeriod: (options?: {
347
+ limit?: number;
348
+ offset?: number;
349
+ }) => Promise<AdminDepositListResponse>;
350
+ /** List pending withdrawals (admin) */
351
+ listPendingWithdrawals: (options?: {
352
+ limit?: number;
353
+ offset?: number;
354
+ }) => Promise<AdminDepositListResponse>;
355
+ /** Process a single withdrawal (admin) */
356
+ processWithdrawal: (sessionId: string, options?: ProcessWithdrawalRequest) => Promise<ProcessWithdrawalResponse>;
357
+ /** Process all ready withdrawals (admin) */
358
+ processAllWithdrawals: () => Promise<ProcessAllWithdrawalsResponse>;
359
+ /** Get Privacy Cash system status */
360
+ getPrivacyStatus: () => Promise<PrivacyStatusResponse>;
361
+ /** Get credit spending stats */
362
+ getCreditStats: () => Promise<AdminCreditStatsResponse>;
363
+ /** Loading state */
364
+ isLoading: boolean;
365
+ /** Error message */
366
+ error: string | null;
367
+ /** Clear error */
368
+ clearError: () => void;
369
+ }
370
+ /** Return type for useCredits hook */
371
+ export interface UseCreditsReturn {
372
+ /** Get SOL credit balance */
373
+ getBalance: () => Promise<CreditBalanceResponse>;
374
+ /** Get all balances */
375
+ getAllBalances: () => Promise<CreditBalanceResponse[]>;
376
+ /** Get transaction history */
377
+ getHistory: (options?: {
378
+ currency?: string;
379
+ limit?: number;
380
+ offset?: number;
381
+ }) => Promise<CreditHistoryResponse>;
382
+ /** Loading state */
383
+ isLoading: boolean;
384
+ /** Error message */
385
+ error: string | null;
386
+ /** Clear error */
387
+ clearError: () => void;
388
+ }
389
+ /** Request to spend credits (server-to-server) */
390
+ export interface SpendCreditsRequest {
391
+ /** Amount in lamports (must be positive) */
392
+ amountLamports: number;
393
+ /** Currency (default: "SOL") */
394
+ currency?: string;
395
+ /** Idempotency key to prevent duplicate charges */
396
+ idempotencyKey: string;
397
+ /** Type of reference (e.g., "order", "subscription") */
398
+ referenceType: string;
399
+ /** ID of the referenced entity */
400
+ referenceId: string;
401
+ /** Optional metadata (items, SKUs, etc.) */
402
+ metadata?: Record<string, unknown>;
403
+ }
404
+ /** Response from spend operation */
405
+ export interface SpendCreditsResponse {
406
+ /** Transaction ID */
407
+ transactionId: string;
408
+ /** New balance after spend */
409
+ newBalanceLamports: number;
410
+ /** Amount spent */
411
+ amountLamports: number;
412
+ /** Currency */
413
+ currency: string;
414
+ /** Human-readable display */
415
+ display: string;
416
+ }
417
+ /** Request to create a credit hold */
418
+ export interface CreateHoldRequest {
419
+ /** Amount in lamports (must be positive) */
420
+ amountLamports: number;
421
+ /** Currency (default: "SOL") */
422
+ currency?: string;
423
+ /** Idempotency key (returns existing hold if duplicate) */
424
+ idempotencyKey: string;
425
+ /** Hold duration in minutes (default: 15, max: 60) */
426
+ ttlMinutes?: number;
427
+ /** Type of reference (e.g., "order") */
428
+ referenceType?: string;
429
+ /** ID of the referenced entity */
430
+ referenceId?: string;
431
+ /** Optional metadata */
432
+ metadata?: Record<string, unknown>;
433
+ }
434
+ /** Response from creating a hold */
435
+ export interface CreateHoldResponse {
436
+ /** Hold ID (use this to capture or release) */
437
+ holdId: string;
438
+ /** Whether this is a new hold (false = idempotent return of existing) */
439
+ isNew: boolean;
440
+ /** Amount held */
441
+ amountLamports: number;
442
+ /** When the hold expires */
443
+ expiresAt: string;
444
+ /** Currency */
445
+ currency: string;
446
+ }
447
+ /** Response from capturing a hold */
448
+ export interface CaptureHoldResponse {
449
+ /** Transaction ID from the captured spend */
450
+ transactionId: string;
451
+ /** New balance after capture */
452
+ newBalanceLamports: number;
453
+ /** Amount captured */
454
+ amountLamports: number;
455
+ /** Currency */
456
+ currency: string;
457
+ /** Human-readable display */
458
+ display: string;
459
+ }
460
+ /** Response from releasing a hold */
461
+ export interface ReleaseHoldResponse {
462
+ /** Indicates the hold was released */
463
+ released: boolean;
464
+ /** Message */
465
+ message: string;
466
+ }
467
+ /** Individual withdrawal history entry */
468
+ export interface WithdrawalHistoryItem {
469
+ id: string;
470
+ depositSessionId: string;
471
+ amountLamports: number;
472
+ amountSol: number;
473
+ txSignature: string;
474
+ cumulativeWithdrawnLamports: number;
475
+ cumulativeWithdrawnSol: number;
476
+ remainingLamports: number;
477
+ remainingSol: number;
478
+ isFinal: boolean;
479
+ withdrawalPercentage: number | null;
480
+ createdAt: string;
481
+ }
482
+ /** User withdrawal history response */
483
+ export interface AdminUserWithdrawalHistoryResponse {
484
+ withdrawals: WithdrawalHistoryItem[];
485
+ total: number;
486
+ limit: number;
487
+ offset: number;
488
+ }
@@ -0,0 +1,11 @@
1
+ export type { AuthMethod, AuthUser, TokenPair, AuthError, AuthErrorCode, AuthResponse, ChallengeResponse, AuthState, PasswordValidation, DisplayError, MfaRequiredResponse, MfaLoginRequest, } from './auth';
2
+ export type { SolanaNetwork, SessionStorage, ThemeMode, SolanaConfig, FeatureFlags, SessionConfig, AuthCallbacks, ThemeOverrides, ForgotPasswordConfig, TermsOfServiceConfig, EmailOptInConfig, FormConfig, TotpConfig, WalletConfig, CedrosLoginConfig, } from './config';
3
+ export type { TotpStatus, TotpSetupResponse, TotpEnableRequest, TotpVerifyRequest, TotpBackupCodesResponse, TotpSetupState, TotpVerifyState, } from './totp';
4
+ export type { OrgRole, Organization, Membership, OrgWithMembership, Permission, CreateOrgRequest, UpdateOrgRequest, ListOrgsResponse, AuthorizeRequest, AuthorizeResponse, PermissionsResponse, OrgState, } from './org';
5
+ export type { Member, MemberApiResponse, MemberUser, UpdateMemberRoleRequest, ListMembersResponse, } from './member';
6
+ export type { Invite, InviteApiResponse, CreateInviteRequest, AcceptInviteRequest, ListInvitesResponse, CreateInviteResponse, AcceptInviteResponse, } from './invite';
7
+ export type { Session, ListSessionsResponse, RevokeAllSessionsResponse } from './session';
8
+ export type { WalletStatus, CryptoCapabilities, EnrollmentState, RecoveryState, KdfParams, ShareAAuthMethod, WalletMaterialResponse, WalletStatusApiResponse, WalletEnrollRequest, PendingWalletRecoveryResponse, AcknowledgeRecoveryRequest, UnlockCredential, SignTransactionRequest, SignTransactionResponse, RotateUserSecretRequest, MessageResponse, WalletUnlockRequest, WalletUnlockResponse, WalletContextValue, UseWalletEnrollmentReturn, UseWalletSigningReturn, UseWalletRecoveryReturn, UseWalletMaterialReturn, UsePrfCapabilityReturn, } from './wallet';
9
+ export type { DepositRequest, DepositResponse, DepositStatusResponse, DepositConfigResponse, DepositTier, DepositQuoteResponse, PublicDepositRequest, MicroDepositRequest, TieredDepositResponse, DepositItemResponse, DepositListResponse, CreditBalanceResponse, BalancesResponse, CreditTransactionResponse, CreditHistoryResponse, UseDepositReturn, UseCreditsReturn, AdminDepositItem, AdminDepositListResponse, AdminDepositStatsResponse, UseAdminDepositsReturn, WithdrawalHistoryItem, AdminUserWithdrawalHistoryResponse, } from './deposit';
10
+ export type { SystemSetting, ListSystemSettingsResponse, UpdateSettingRequest, UpdateSystemSettingsRequest, UpdateSystemSettingsResponse, SettingCategoryMeta, SettingMeta, SettingPreset, UseSystemSettingsReturn, } from './systemSettings';
11
+ export type { AdminCreditTransactionItem, AdminUser, AdminUserCreditStats, AdminUserCreditsResponse, AdjustCreditsRequest, ListAdminUsersResponse, ListUsersParams, SetSystemAdminRequest, UpdateUserRequest, UseAdminUsersReturn, } from './adminUser';
@@ -0,0 +1,71 @@
1
+ import { OrgRole } from './org';
2
+ /**
3
+ * Pending invite to an organization
4
+ *
5
+ * TYPE-05: invitedByName removed - backend doesn't populate it.
6
+ * To show inviter name, would need to join users table in backend.
7
+ */
8
+ export interface Invite {
9
+ id: string;
10
+ orgId: string;
11
+ email: string;
12
+ role: Exclude<OrgRole, 'owner'>;
13
+ invitedBy: string;
14
+ createdAt: string;
15
+ expiresAt: string;
16
+ }
17
+ /**
18
+ * Invite response shape returned by the API
19
+ */
20
+ export interface InviteApiResponse {
21
+ id: string;
22
+ orgId: string;
23
+ email: string;
24
+ role: Exclude<OrgRole, 'owner'>;
25
+ invitedBy: string;
26
+ createdAt: string;
27
+ expiresAt: string;
28
+ acceptedAt?: string;
29
+ }
30
+ /**
31
+ * Request to create a new invite
32
+ */
33
+ export interface CreateInviteRequest {
34
+ email: string;
35
+ role?: Exclude<OrgRole, 'owner'>;
36
+ }
37
+ /**
38
+ * Request to accept an invite
39
+ */
40
+ export interface AcceptInviteRequest {
41
+ token: string;
42
+ }
43
+ /**
44
+ * Response from listing invites
45
+ */
46
+ export interface ListInvitesResponse {
47
+ invites: InviteApiResponse[];
48
+ total: number;
49
+ }
50
+ /**
51
+ * Response from creating an invite
52
+ */
53
+ export interface CreateInviteResponse {
54
+ id: string;
55
+ orgId: string;
56
+ email: string;
57
+ role: Exclude<OrgRole, 'owner'>;
58
+ invitedBy: string;
59
+ createdAt: string;
60
+ expiresAt: string;
61
+ acceptedAt?: string;
62
+ token: string;
63
+ }
64
+ /**
65
+ * Response from accepting an invite
66
+ */
67
+ export interface AcceptInviteResponse {
68
+ orgId: string;
69
+ orgName: string;
70
+ role: OrgRole;
71
+ }
@@ -0,0 +1,45 @@
1
+ import { OrgRole } from './org';
2
+ /**
3
+ * Member of an organization
4
+ */
5
+ export interface Member {
6
+ id: string;
7
+ userId: string;
8
+ orgId: string;
9
+ role: OrgRole;
10
+ joinedAt: string;
11
+ user: MemberUser;
12
+ }
13
+ /**
14
+ * Member response shape returned by the API
15
+ */
16
+ export interface MemberApiResponse {
17
+ id: string;
18
+ userId: string;
19
+ role: OrgRole;
20
+ joinedAt: string;
21
+ email?: string;
22
+ name?: string;
23
+ }
24
+ /**
25
+ * User info within a membership context
26
+ */
27
+ export interface MemberUser {
28
+ id: string;
29
+ email?: string;
30
+ name?: string;
31
+ picture?: string;
32
+ }
33
+ /**
34
+ * Request to update a member's role
35
+ */
36
+ export interface UpdateMemberRoleRequest {
37
+ role: OrgRole;
38
+ }
39
+ /**
40
+ * Response from listing members
41
+ */
42
+ export interface ListMembersResponse {
43
+ members: MemberApiResponse[];
44
+ total: number;
45
+ }