@varity-labs/sdk 2.0.0-alpha.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 (295) hide show
  1. package/LICENSE +31 -0
  2. package/README.md +253 -0
  3. package/dist/analytics/index.d.ts +7 -0
  4. package/dist/analytics/index.d.ts.map +1 -0
  5. package/dist/analytics/index.js +6 -0
  6. package/dist/analytics/tracker.d.ts +128 -0
  7. package/dist/analytics/tracker.d.ts.map +1 -0
  8. package/dist/analytics/tracker.js +203 -0
  9. package/dist/blockchain/BlockchainService.d.ts +100 -0
  10. package/dist/blockchain/BlockchainService.d.ts.map +1 -0
  11. package/dist/blockchain/BlockchainService.js +188 -0
  12. package/dist/blockchain/NFTLicensingService.d.ts +69 -0
  13. package/dist/blockchain/NFTLicensingService.d.ts.map +1 -0
  14. package/dist/blockchain/NFTLicensingService.js +136 -0
  15. package/dist/blockchain/RevenueSplitService.d.ts +71 -0
  16. package/dist/blockchain/RevenueSplitService.d.ts.map +1 -0
  17. package/dist/blockchain/RevenueSplitService.js +111 -0
  18. package/dist/blockchain/index.d.ts +48 -0
  19. package/dist/blockchain/index.d.ts.map +1 -0
  20. package/dist/blockchain/index.js +46 -0
  21. package/dist/blockchain/types.d.ts +63 -0
  22. package/dist/blockchain/types.d.ts.map +1 -0
  23. package/dist/blockchain/types.js +6 -0
  24. package/dist/chains/arbitrum.d.ts +89 -0
  25. package/dist/chains/arbitrum.d.ts.map +1 -0
  26. package/dist/chains/arbitrum.js +134 -0
  27. package/dist/chains/base.d.ts +84 -0
  28. package/dist/chains/base.d.ts.map +1 -0
  29. package/dist/chains/base.js +131 -0
  30. package/dist/chains/index.d.ts +36 -0
  31. package/dist/chains/index.d.ts.map +1 -0
  32. package/dist/chains/index.js +32 -0
  33. package/dist/chains/registry.d.ts +113 -0
  34. package/dist/chains/registry.d.ts.map +1 -0
  35. package/dist/chains/registry.js +201 -0
  36. package/dist/chains/varityL3.d.ts +81 -0
  37. package/dist/chains/varityL3.d.ts.map +1 -0
  38. package/dist/chains/varityL3.js +125 -0
  39. package/dist/cli/commands/clone.d.ts +8 -0
  40. package/dist/cli/commands/clone.d.ts.map +1 -0
  41. package/dist/cli/commands/clone.js +391 -0
  42. package/dist/cli/commands/dev.d.ts +8 -0
  43. package/dist/cli/commands/dev.d.ts.map +1 -0
  44. package/dist/cli/commands/dev.js +40 -0
  45. package/dist/cli/commands/generate.d.ts +8 -0
  46. package/dist/cli/commands/generate.d.ts.map +1 -0
  47. package/dist/cli/commands/generate.js +303 -0
  48. package/dist/cli/commands/init.d.ts +8 -0
  49. package/dist/cli/commands/init.d.ts.map +1 -0
  50. package/dist/cli/commands/init.js +317 -0
  51. package/dist/cli/commands/validate.d.ts +8 -0
  52. package/dist/cli/commands/validate.d.ts.map +1 -0
  53. package/dist/cli/commands/validate.js +69 -0
  54. package/dist/cli/index.d.ts +8 -0
  55. package/dist/cli/index.d.ts.map +1 -0
  56. package/dist/cli/index.js +33 -0
  57. package/dist/cli/utils/logger.d.ts +17 -0
  58. package/dist/cli/utils/logger.d.ts.map +1 -0
  59. package/dist/cli/utils/logger.js +35 -0
  60. package/dist/cli/utils/prompts.d.ts +21 -0
  61. package/dist/cli/utils/prompts.d.ts.map +1 -0
  62. package/dist/cli/utils/prompts.js +103 -0
  63. package/dist/contracts/abis/iso/AccessControlRegistry.json +1468 -0
  64. package/dist/contracts/abis/iso/DataProofRegistry.json +797 -0
  65. package/dist/contracts/abis/iso/MerchantRegistry.json +1237 -0
  66. package/dist/contracts/abis/iso/RepPerformance.json +1351 -0
  67. package/dist/contracts/abis/iso/ResidualCalculator.json +1118 -0
  68. package/dist/contracts/abis/iso/TransactionVault.json +1588 -0
  69. package/dist/contracts/abis/iso/VarityWalletFactory.json +475 -0
  70. package/dist/contracts/addresses.d.ts +88 -0
  71. package/dist/contracts/addresses.d.ts.map +1 -0
  72. package/dist/contracts/addresses.js +94 -0
  73. package/dist/contracts/index.d.ts +7 -0
  74. package/dist/contracts/index.d.ts.map +1 -0
  75. package/dist/contracts/index.js +6 -0
  76. package/dist/core/VaritySDK.d.ts +177 -0
  77. package/dist/core/VaritySDK.d.ts.map +1 -0
  78. package/dist/core/VaritySDK.js +325 -0
  79. package/dist/core/config.d.ts +120 -0
  80. package/dist/core/config.d.ts.map +1 -0
  81. package/dist/core/config.js +187 -0
  82. package/dist/core/credentials-proxy.d.ts +157 -0
  83. package/dist/core/credentials-proxy.d.ts.map +1 -0
  84. package/dist/core/credentials-proxy.js +345 -0
  85. package/dist/core/credentials.d.ts +219 -0
  86. package/dist/core/credentials.d.ts.map +1 -0
  87. package/dist/core/credentials.js +345 -0
  88. package/dist/core/template-loader.d.ts +15 -0
  89. package/dist/core/template-loader.d.ts.map +1 -0
  90. package/dist/core/template-loader.js +380 -0
  91. package/dist/core/template.d.ts +321 -0
  92. package/dist/core/template.d.ts.map +1 -0
  93. package/dist/core/template.js +189 -0
  94. package/dist/core/types.d.ts +572 -0
  95. package/dist/core/types.d.ts.map +1 -0
  96. package/dist/core/types.js +52 -0
  97. package/dist/dev/dev-server.d.ts +16 -0
  98. package/dist/dev/dev-server.d.ts.map +1 -0
  99. package/dist/dev/dev-server.js +119 -0
  100. package/dist/generators/contracts/generator.d.ts +21 -0
  101. package/dist/generators/contracts/generator.d.ts.map +1 -0
  102. package/dist/generators/contracts/generator.js +252 -0
  103. package/dist/generators/tests/generator.d.ts +20 -0
  104. package/dist/generators/tests/generator.d.ts.map +1 -0
  105. package/dist/generators/tests/generator.js +375 -0
  106. package/dist/generators/types/generator.d.ts +19 -0
  107. package/dist/generators/types/generator.d.ts.map +1 -0
  108. package/dist/generators/types/generator.js +165 -0
  109. package/dist/generators/ui/component-generator.d.ts +20 -0
  110. package/dist/generators/ui/component-generator.d.ts.map +1 -0
  111. package/dist/generators/ui/component-generator.js +749 -0
  112. package/dist/generators/ui/dashboard-generator.d.ts +20 -0
  113. package/dist/generators/ui/dashboard-generator.d.ts.map +1 -0
  114. package/dist/generators/ui/dashboard-generator.js +349 -0
  115. package/dist/index.d.ts +61 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +74 -0
  118. package/dist/modules/analytics/AnalyticsModule.d.ts +349 -0
  119. package/dist/modules/analytics/AnalyticsModule.d.ts.map +1 -0
  120. package/dist/modules/analytics/AnalyticsModule.js +274 -0
  121. package/dist/modules/analytics/index.d.ts +3 -0
  122. package/dist/modules/analytics/index.d.ts.map +1 -0
  123. package/dist/modules/analytics/index.js +1 -0
  124. package/dist/modules/auth/AccessKeyModule.d.ts +189 -0
  125. package/dist/modules/auth/AccessKeyModule.d.ts.map +1 -0
  126. package/dist/modules/auth/AccessKeyModule.js +322 -0
  127. package/dist/modules/auth/AuthModule.d.ts +133 -0
  128. package/dist/modules/auth/AuthModule.d.ts.map +1 -0
  129. package/dist/modules/auth/AuthModule.js +214 -0
  130. package/dist/modules/auth/index.d.ts +8 -0
  131. package/dist/modules/auth/index.d.ts.map +1 -0
  132. package/dist/modules/auth/index.js +6 -0
  133. package/dist/modules/cache/CacheModule.d.ts +279 -0
  134. package/dist/modules/cache/CacheModule.d.ts.map +1 -0
  135. package/dist/modules/cache/CacheModule.js +493 -0
  136. package/dist/modules/cache/index.d.ts +3 -0
  137. package/dist/modules/cache/index.d.ts.map +1 -0
  138. package/dist/modules/cache/index.js +1 -0
  139. package/dist/modules/compute/ComputeModule.d.ts +226 -0
  140. package/dist/modules/compute/ComputeModule.d.ts.map +1 -0
  141. package/dist/modules/compute/ComputeModule.js +379 -0
  142. package/dist/modules/compute/index.d.ts +6 -0
  143. package/dist/modules/compute/index.d.ts.map +1 -0
  144. package/dist/modules/compute/index.js +4 -0
  145. package/dist/modules/contracts/ContractsModule.d.ts +164 -0
  146. package/dist/modules/contracts/ContractsModule.d.ts.map +1 -0
  147. package/dist/modules/contracts/ContractsModule.js +242 -0
  148. package/dist/modules/contracts/index.d.ts +6 -0
  149. package/dist/modules/contracts/index.d.ts.map +1 -0
  150. package/dist/modules/contracts/index.js +4 -0
  151. package/dist/modules/export/ExportModule.d.ts +346 -0
  152. package/dist/modules/export/ExportModule.d.ts.map +1 -0
  153. package/dist/modules/export/ExportModule.js +432 -0
  154. package/dist/modules/export/index.d.ts +3 -0
  155. package/dist/modules/export/index.d.ts.map +1 -0
  156. package/dist/modules/export/index.js +1 -0
  157. package/dist/modules/forecasting/ForecastingModule.d.ts +579 -0
  158. package/dist/modules/forecasting/ForecastingModule.d.ts.map +1 -0
  159. package/dist/modules/forecasting/ForecastingModule.js +310 -0
  160. package/dist/modules/forecasting/index.d.ts +3 -0
  161. package/dist/modules/forecasting/index.d.ts.map +1 -0
  162. package/dist/modules/forecasting/index.js +1 -0
  163. package/dist/modules/monitoring/MonitoringModule.d.ts +359 -0
  164. package/dist/modules/monitoring/MonitoringModule.d.ts.map +1 -0
  165. package/dist/modules/monitoring/MonitoringModule.js +483 -0
  166. package/dist/modules/monitoring/index.d.ts +3 -0
  167. package/dist/modules/monitoring/index.d.ts.map +1 -0
  168. package/dist/modules/monitoring/index.js +1 -0
  169. package/dist/modules/notifications/NotificationsModule.d.ts +336 -0
  170. package/dist/modules/notifications/NotificationsModule.d.ts.map +1 -0
  171. package/dist/modules/notifications/NotificationsModule.js +418 -0
  172. package/dist/modules/notifications/index.d.ts +3 -0
  173. package/dist/modules/notifications/index.d.ts.map +1 -0
  174. package/dist/modules/notifications/index.js +1 -0
  175. package/dist/modules/oracle/OracleModule.d.ts +110 -0
  176. package/dist/modules/oracle/OracleModule.d.ts.map +1 -0
  177. package/dist/modules/oracle/OracleModule.js +151 -0
  178. package/dist/modules/oracle/index.d.ts +6 -0
  179. package/dist/modules/oracle/index.d.ts.map +1 -0
  180. package/dist/modules/oracle/index.js +4 -0
  181. package/dist/modules/storage/S3Module.d.ts +377 -0
  182. package/dist/modules/storage/S3Module.d.ts.map +1 -0
  183. package/dist/modules/storage/S3Module.js +680 -0
  184. package/dist/modules/storage/StorageModule.d.ts +157 -0
  185. package/dist/modules/storage/StorageModule.d.ts.map +1 -0
  186. package/dist/modules/storage/StorageModule.js +302 -0
  187. package/dist/modules/storage/adapters/AdapterFactory.d.ts +100 -0
  188. package/dist/modules/storage/adapters/AdapterFactory.d.ts.map +1 -0
  189. package/dist/modules/storage/adapters/AdapterFactory.js +209 -0
  190. package/dist/modules/storage/adapters/FilecoinAdapter.d.ts +94 -0
  191. package/dist/modules/storage/adapters/FilecoinAdapter.d.ts.map +1 -0
  192. package/dist/modules/storage/adapters/FilecoinAdapter.js +263 -0
  193. package/dist/modules/storage/adapters/IStorageAdapter.d.ts +287 -0
  194. package/dist/modules/storage/adapters/IStorageAdapter.d.ts.map +1 -0
  195. package/dist/modules/storage/adapters/IStorageAdapter.js +81 -0
  196. package/dist/modules/storage/adapters/MultiTierAdapter.d.ts +187 -0
  197. package/dist/modules/storage/adapters/MultiTierAdapter.d.ts.map +1 -0
  198. package/dist/modules/storage/adapters/MultiTierAdapter.js +430 -0
  199. package/dist/modules/storage/adapters/index.d.ts +12 -0
  200. package/dist/modules/storage/adapters/index.d.ts.map +1 -0
  201. package/dist/modules/storage/adapters/index.js +12 -0
  202. package/dist/modules/storage/index.d.ts +16 -0
  203. package/dist/modules/storage/index.d.ts.map +1 -0
  204. package/dist/modules/storage/index.js +15 -0
  205. package/dist/modules/storage/tiering/AccessAnalyzer.d.ts +227 -0
  206. package/dist/modules/storage/tiering/AccessAnalyzer.d.ts.map +1 -0
  207. package/dist/modules/storage/tiering/AccessAnalyzer.js +367 -0
  208. package/dist/modules/storage/tiering/CostOptimizer.d.ts +248 -0
  209. package/dist/modules/storage/tiering/CostOptimizer.d.ts.map +1 -0
  210. package/dist/modules/storage/tiering/CostOptimizer.js +356 -0
  211. package/dist/modules/storage/tiering/MetadataStore.d.ts +287 -0
  212. package/dist/modules/storage/tiering/MetadataStore.d.ts.map +1 -0
  213. package/dist/modules/storage/tiering/MetadataStore.js +535 -0
  214. package/dist/modules/storage/tiering/TieringEngine.d.ts +237 -0
  215. package/dist/modules/storage/tiering/TieringEngine.d.ts.map +1 -0
  216. package/dist/modules/storage/tiering/TieringEngine.js +419 -0
  217. package/dist/modules/storage/tiering/example.d.ts +8 -0
  218. package/dist/modules/storage/tiering/example.d.ts.map +1 -0
  219. package/dist/modules/storage/tiering/example.js +250 -0
  220. package/dist/modules/storage/tiering/index.d.ts +17 -0
  221. package/dist/modules/storage/tiering/index.d.ts.map +1 -0
  222. package/dist/modules/storage/tiering/index.js +13 -0
  223. package/dist/modules/webhooks/WebhooksModule.d.ts +476 -0
  224. package/dist/modules/webhooks/WebhooksModule.d.ts.map +1 -0
  225. package/dist/modules/webhooks/WebhooksModule.js +359 -0
  226. package/dist/modules/webhooks/index.d.ts +3 -0
  227. package/dist/modules/webhooks/index.d.ts.map +1 -0
  228. package/dist/modules/webhooks/index.js +1 -0
  229. package/dist/modules/zk/ZKModule.d.ts +153 -0
  230. package/dist/modules/zk/ZKModule.d.ts.map +1 -0
  231. package/dist/modules/zk/ZKModule.js +262 -0
  232. package/dist/modules/zk/index.d.ts +7 -0
  233. package/dist/modules/zk/index.d.ts.map +1 -0
  234. package/dist/modules/zk/index.js +4 -0
  235. package/dist/thirdweb/BridgeClient.d.ts +228 -0
  236. package/dist/thirdweb/BridgeClient.d.ts.map +1 -0
  237. package/dist/thirdweb/BridgeClient.js +160 -0
  238. package/dist/thirdweb/EngineClient.d.ts +396 -0
  239. package/dist/thirdweb/EngineClient.d.ts.map +1 -0
  240. package/dist/thirdweb/EngineClient.js +386 -0
  241. package/dist/thirdweb/GatewayClient.d.ts +190 -0
  242. package/dist/thirdweb/GatewayClient.d.ts.map +1 -0
  243. package/dist/thirdweb/GatewayClient.js +257 -0
  244. package/dist/thirdweb/NebulaClient.d.ts +292 -0
  245. package/dist/thirdweb/NebulaClient.d.ts.map +1 -0
  246. package/dist/thirdweb/NebulaClient.js +180 -0
  247. package/dist/thirdweb/StorageClient.d.ts +445 -0
  248. package/dist/thirdweb/StorageClient.d.ts.map +1 -0
  249. package/dist/thirdweb/StorageClient.js +405 -0
  250. package/dist/thirdweb/ThirdwebWrapper.d.ts +236 -0
  251. package/dist/thirdweb/ThirdwebWrapper.d.ts.map +1 -0
  252. package/dist/thirdweb/ThirdwebWrapper.js +332 -0
  253. package/dist/thirdweb/index.d.ts +21 -0
  254. package/dist/thirdweb/index.d.ts.map +1 -0
  255. package/dist/thirdweb/index.js +28 -0
  256. package/dist/thirdweb/varity-chain.d.ts +48 -0
  257. package/dist/thirdweb/varity-chain.d.ts.map +1 -0
  258. package/dist/thirdweb/varity-chain.js +64 -0
  259. package/dist/thirdweb/x402Client.d.ts +319 -0
  260. package/dist/thirdweb/x402Client.d.ts.map +1 -0
  261. package/dist/thirdweb/x402Client.js +223 -0
  262. package/dist/tracking/gasTracker.d.ts +158 -0
  263. package/dist/tracking/gasTracker.d.ts.map +1 -0
  264. package/dist/tracking/gasTracker.js +227 -0
  265. package/dist/tracking/index.d.ts +10 -0
  266. package/dist/tracking/index.d.ts.map +1 -0
  267. package/dist/tracking/index.js +8 -0
  268. package/dist/tracking/types.d.ts +327 -0
  269. package/dist/tracking/types.d.ts.map +1 -0
  270. package/dist/tracking/types.js +8 -0
  271. package/dist/ui/components/ChartWidget.d.ts +36 -0
  272. package/dist/ui/components/ChartWidget.d.ts.map +1 -0
  273. package/dist/ui/components/ChartWidget.js +82 -0
  274. package/dist/ui/components/DashboardLayout.d.ts +41 -0
  275. package/dist/ui/components/DashboardLayout.d.ts.map +1 -0
  276. package/dist/ui/components/DashboardLayout.js +102 -0
  277. package/dist/ui/components/DataTable.d.ts +49 -0
  278. package/dist/ui/components/DataTable.d.ts.map +1 -0
  279. package/dist/ui/components/DataTable.js +96 -0
  280. package/dist/ui/components/EntityForm.d.ts +60 -0
  281. package/dist/ui/components/EntityForm.d.ts.map +1 -0
  282. package/dist/ui/components/EntityForm.js +182 -0
  283. package/dist/ui/components/KPICard.d.ts +29 -0
  284. package/dist/ui/components/KPICard.d.ts.map +1 -0
  285. package/dist/ui/components/KPICard.js +61 -0
  286. package/dist/ui/components/Modal.d.ts +34 -0
  287. package/dist/ui/components/Modal.d.ts.map +1 -0
  288. package/dist/ui/components/Modal.js +30 -0
  289. package/dist/ui/components/index.d.ts +18 -0
  290. package/dist/ui/components/index.d.ts.map +1 -0
  291. package/dist/ui/components/index.js +11 -0
  292. package/dist/validation/template-validator.d.ts +25 -0
  293. package/dist/validation/template-validator.d.ts.map +1 -0
  294. package/dist/validation/template-validator.js +305 -0
  295. package/package.json +102 -0
@@ -0,0 +1,345 @@
1
+ /**
2
+ * Varity SDK - Credential Proxy Client
3
+ *
4
+ * Client-side integration with Varity Credential Proxy service.
5
+ * Fetches credentials from server-side proxy instead of bundling them in client code.
6
+ *
7
+ * **Security Model**:
8
+ * - Real credentials stored server-side ONLY
9
+ * - Client receives session-based tokens
10
+ * - No credentials in client bundles
11
+ * - Automatic session management
12
+ *
13
+ * @example Usage in SDK
14
+ * ```typescript
15
+ * import { ProxyCredentialClient } from '@varity-labs/sdk';
16
+ *
17
+ * const client = new ProxyCredentialClient();
18
+ * const credentials = await client.getCredentials();
19
+ *
20
+ * // Use credentials with Privy/thirdweb
21
+ * const privyAppId = credentials.privy.appId;
22
+ * const thirdwebClientId = credentials.thirdweb.clientId;
23
+ * ```
24
+ */
25
+ /**
26
+ * Credential Proxy Client
27
+ *
28
+ * Fetches Privy and thirdweb credentials from server-side proxy.
29
+ * Handles session management, caching, and automatic refresh.
30
+ */
31
+ export class ProxyCredentialClient {
32
+ constructor(config = {}) {
33
+ // Session management
34
+ this.sessionToken = null;
35
+ this.sessionExpiresAt = null;
36
+ // Cached credentials
37
+ this.cachedCredentials = null;
38
+ // Use production URL by default, fallback to localhost for local testing
39
+ this.proxyUrl = config.proxyUrl ||
40
+ process.env.VARITY_CREDENTIAL_PROXY_URL ||
41
+ 'https://api.varity.so/credentials';
42
+ this.appDomain = config.appDomain || this.detectAppDomain();
43
+ this.appId = config.appId;
44
+ this.debug = config.debug || false;
45
+ this.log('ProxyCredentialClient initialized', {
46
+ proxyUrl: this.proxyUrl,
47
+ appDomain: this.appDomain,
48
+ appId: this.appId,
49
+ });
50
+ }
51
+ /**
52
+ * Get credentials from proxy
53
+ *
54
+ * Automatically handles session creation and refresh.
55
+ *
56
+ * @returns Credential configuration
57
+ */
58
+ async getCredentials() {
59
+ // Return cached credentials if still valid
60
+ if (this.cachedCredentials && this.isSessionValid()) {
61
+ this.log('Using cached credentials');
62
+ return this.cachedCredentials;
63
+ }
64
+ // Create or refresh session
65
+ if (!this.isSessionValid()) {
66
+ await this.createSession();
67
+ }
68
+ // Fetch credentials in parallel
69
+ const [privyConfig, thirdwebConfig] = await Promise.all([
70
+ this.getPrivyConfig(),
71
+ this.getThirdwebConfig(),
72
+ ]);
73
+ // Cache credentials
74
+ this.cachedCredentials = {
75
+ privy: {
76
+ appId: privyConfig.app_id,
77
+ },
78
+ thirdweb: {
79
+ clientId: thirdwebConfig.client_id,
80
+ },
81
+ };
82
+ this.log('Credentials fetched successfully', this.cachedCredentials);
83
+ return this.cachedCredentials;
84
+ }
85
+ /**
86
+ * Create a new session with the credential proxy
87
+ */
88
+ async createSession() {
89
+ this.log('Creating new session');
90
+ try {
91
+ const response = await fetch(`${this.proxyUrl}/auth/session`, {
92
+ method: 'POST',
93
+ headers: {
94
+ 'Content-Type': 'application/json',
95
+ },
96
+ body: JSON.stringify({
97
+ app_domain: this.appDomain,
98
+ app_id: this.appId,
99
+ }),
100
+ });
101
+ if (!response.ok) {
102
+ const error = await response.text();
103
+ throw new Error(`Failed to create session: ${response.status} ${error}`);
104
+ }
105
+ const data = await response.json();
106
+ this.sessionToken = data.session_token;
107
+ this.sessionExpiresAt = new Date(data.expires_at);
108
+ this.log('Session created', {
109
+ token: this.sessionToken?.substring(0, 8) + '...',
110
+ expiresAt: this.sessionExpiresAt,
111
+ });
112
+ }
113
+ catch (error) {
114
+ throw new Error(`Failed to create session with credential proxy: ${error instanceof Error ? error.message : 'Unknown error'}`);
115
+ }
116
+ }
117
+ /**
118
+ * Get Privy configuration from proxy
119
+ */
120
+ async getPrivyConfig() {
121
+ if (!this.sessionToken) {
122
+ throw new Error('No session token available');
123
+ }
124
+ this.log('Fetching Privy config');
125
+ try {
126
+ const response = await fetch(`${this.proxyUrl}/auth/privy/config?session_token=${this.sessionToken}`);
127
+ if (!response.ok) {
128
+ const error = await response.text();
129
+ throw new Error(`Failed to fetch Privy config: ${response.status} ${error}`);
130
+ }
131
+ const data = await response.json();
132
+ this.log('Privy config fetched', { appId: data.app_id.substring(0, 8) + '...' });
133
+ return data;
134
+ }
135
+ catch (error) {
136
+ throw new Error(`Failed to fetch Privy config: ${error instanceof Error ? error.message : 'Unknown error'}`);
137
+ }
138
+ }
139
+ /**
140
+ * Get thirdweb configuration from proxy
141
+ */
142
+ async getThirdwebConfig() {
143
+ if (!this.sessionToken) {
144
+ throw new Error('No session token available');
145
+ }
146
+ this.log('Fetching thirdweb config');
147
+ try {
148
+ const response = await fetch(`${this.proxyUrl}/auth/thirdweb/config?session_token=${this.sessionToken}`);
149
+ if (!response.ok) {
150
+ const error = await response.text();
151
+ throw new Error(`Failed to fetch thirdweb config: ${response.status} ${error}`);
152
+ }
153
+ const data = await response.json();
154
+ this.log('thirdweb config fetched', { clientId: data.client_id.substring(0, 8) + '...' });
155
+ return data;
156
+ }
157
+ catch (error) {
158
+ throw new Error(`Failed to fetch thirdweb config: ${error instanceof Error ? error.message : 'Unknown error'}`);
159
+ }
160
+ }
161
+ /**
162
+ * Check if current session is still valid
163
+ */
164
+ isSessionValid() {
165
+ if (!this.sessionToken || !this.sessionExpiresAt) {
166
+ return false;
167
+ }
168
+ // Add 5 minute buffer before expiry
169
+ const bufferMs = 5 * 60 * 1000;
170
+ const now = new Date();
171
+ const expiryWithBuffer = new Date(this.sessionExpiresAt.getTime() - bufferMs);
172
+ return now < expiryWithBuffer;
173
+ }
174
+ /**
175
+ * Detect app domain from browser environment
176
+ */
177
+ detectAppDomain() {
178
+ // Check if running in browser
179
+ if (typeof window !== 'undefined' && window.location) {
180
+ return window.location.hostname + (window.location.port ? `:${window.location.port}` : '');
181
+ }
182
+ // Fallback for SSR/Node.js
183
+ return 'localhost:3000';
184
+ }
185
+ /**
186
+ * Clear cached credentials and session
187
+ */
188
+ clearCache() {
189
+ this.log('Clearing cache');
190
+ this.sessionToken = null;
191
+ this.sessionExpiresAt = null;
192
+ this.cachedCredentials = null;
193
+ }
194
+ /**
195
+ * Debug logging
196
+ */
197
+ log(message, data) {
198
+ if (this.debug) {
199
+ console.log(`[ProxyCredentialClient] ${message}`, data || '');
200
+ }
201
+ }
202
+ }
203
+ /**
204
+ * Global singleton instance for convenience
205
+ */
206
+ let globalProxyClient = null;
207
+ /**
208
+ * Get or create global ProxyCredentialClient instance
209
+ *
210
+ * @param config - Optional configuration (only used on first call)
211
+ * @returns Global ProxyCredentialClient instance
212
+ *
213
+ * @example
214
+ * ```typescript
215
+ * import { getProxyCredentials } from '@varity-labs/sdk';
216
+ *
217
+ * const credentials = await getProxyCredentials();
218
+ * // Use credentials.privy.appId and credentials.thirdweb.clientId
219
+ * ```
220
+ */
221
+ export async function getProxyCredentials(config) {
222
+ if (!globalProxyClient) {
223
+ globalProxyClient = new ProxyCredentialClient(config);
224
+ }
225
+ return globalProxyClient.getCredentials();
226
+ }
227
+ /**
228
+ * Check if credential proxy is available
229
+ *
230
+ * Tests connectivity to the credential proxy service.
231
+ *
232
+ * @param proxyUrl - Optional proxy URL (defaults to production URL)
233
+ * @returns true if proxy is available, false otherwise
234
+ *
235
+ * @example
236
+ * ```typescript
237
+ * import { isProxyAvailable } from '@varity-labs/sdk';
238
+ *
239
+ * if (await isProxyAvailable()) {
240
+ * // Use proxy credentials
241
+ * } else {
242
+ * // Fallback to manual credentials
243
+ * }
244
+ * ```
245
+ */
246
+ export async function isProxyAvailable(proxyUrl = process.env.VARITY_CREDENTIAL_PROXY_URL || 'https://api.varity.so/credentials') {
247
+ try {
248
+ const response = await fetch(`${proxyUrl}/health`, {
249
+ method: 'GET',
250
+ signal: AbortSignal.timeout(5000), // 5 second timeout
251
+ });
252
+ return response.ok;
253
+ }
254
+ catch (error) {
255
+ // Silently fail - this is expected if proxy not deployed yet
256
+ return false;
257
+ }
258
+ }
259
+ /**
260
+ * Resolve credentials with automatic proxy fallback
261
+ *
262
+ * Attempts to use credential proxy first, falls back to manual credentials if proxy unavailable.
263
+ *
264
+ * @param manualAppId - Manual Privy app ID (fallback)
265
+ * @param manualClientId - Manual thirdweb client ID (fallback)
266
+ * @param config - Proxy client configuration
267
+ * @returns Resolved credentials
268
+ *
269
+ * @example
270
+ * ```typescript
271
+ * import { resolveCredentialsWithProxy } from '@varity-labs/sdk';
272
+ *
273
+ * const credentials = await resolveCredentialsWithProxy(
274
+ * process.env.PRIVY_APP_ID,
275
+ * process.env.THIRDWEB_CLIENT_ID
276
+ * );
277
+ * ```
278
+ */
279
+ export async function resolveCredentialsWithProxy(manualAppId, manualClientId, config) {
280
+ // Try proxy first
281
+ try {
282
+ const proxyUrl = config?.proxyUrl ||
283
+ process.env.VARITY_CREDENTIAL_PROXY_URL ||
284
+ 'https://api.varity.so/credentials';
285
+ const available = await isProxyAvailable(proxyUrl);
286
+ if (available) {
287
+ // Show clean informative message (only in development)
288
+ if (process.env.NODE_ENV === 'development') {
289
+ console.log('✓ Using Varity authentication (no setup required)');
290
+ }
291
+ return await getProxyCredentials(config);
292
+ }
293
+ }
294
+ catch (error) {
295
+ // Silently fall back to manual credentials
296
+ if (config?.debug) {
297
+ console.warn('Credential proxy unavailable, using fallback credentials:', error);
298
+ }
299
+ }
300
+ // Fallback to manual credentials
301
+ if (manualAppId && manualClientId) {
302
+ if (config?.debug) {
303
+ console.log('✓ Using manual credentials');
304
+ }
305
+ return {
306
+ privy: { appId: manualAppId },
307
+ thirdweb: { clientId: manualClientId },
308
+ };
309
+ }
310
+ // Check environment variables as fallback
311
+ const envAppId = process.env.VARITY_PRIVY_APP_ID;
312
+ const envClientId = process.env.VARITY_THIRDWEB_CLIENT_ID;
313
+ if (envAppId && envClientId) {
314
+ if (config?.debug) {
315
+ console.log('✓ Using credentials from environment variables');
316
+ }
317
+ return {
318
+ privy: { appId: envAppId },
319
+ thirdweb: { clientId: envClientId },
320
+ };
321
+ }
322
+ // No credentials available - throw helpful error
323
+ throw new Error(`Varity credentials not available.
324
+
325
+ The Varity Credential Proxy could not be reached and no manual credentials were provided.
326
+
327
+ To fix this, either:
328
+
329
+ 1. Deploy your app via Varity (recommended):
330
+ $ varitykit app deploy --hosting akash
331
+ → Credentials will be provided automatically
332
+
333
+ 2. Set environment variables:
334
+ VARITY_PRIVY_APP_ID=your-privy-app-id
335
+ VARITY_THIRDWEB_CLIENT_ID=your-thirdweb-client-id
336
+
337
+ 3. Pass credentials directly:
338
+ <PrivyStack appId="..." thirdwebClientId="...">
339
+
340
+ Get your own credentials at:
341
+ - Privy: https://dashboard.privy.io
342
+ - thirdweb: https://thirdweb.com/dashboard
343
+
344
+ Documentation: https://docs.varity.so/credentials`);
345
+ }
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Varity SDK - Shared Development Credentials
3
+ *
4
+ * Provides shared development credentials for seamless developer experience.
5
+ * Developers can use Varity packages without manually setting up Privy and thirdweb credentials.
6
+ *
7
+ * **IMPORTANT**: These credentials are for DEVELOPMENT/TESTING ONLY.
8
+ * For production deployments, you MUST use your own credentials.
9
+ *
10
+ * @example Zero-config development
11
+ * ```tsx
12
+ * import { PrivyStack } from '@varity-labs/ui-kit';
13
+ *
14
+ * // Works immediately - uses shared dev credentials
15
+ * <PrivyStack>
16
+ * <YourApp />
17
+ * </PrivyStack>
18
+ * ```
19
+ *
20
+ * @example Production with custom credentials
21
+ * ```tsx
22
+ * import { PrivyStack } from '@varity-labs/ui-kit';
23
+ *
24
+ * <PrivyStack
25
+ * appId={process.env.PRIVY_APP_ID}
26
+ * thirdwebClientId={process.env.THIRDWEB_CLIENT_ID}
27
+ * >
28
+ * <YourApp />
29
+ * </PrivyStack>
30
+ * ```
31
+ */
32
+ /**
33
+ * Shared development credentials configuration
34
+ *
35
+ * These credentials are managed by Varity and shared across all development environments.
36
+ * They enable developers to start building immediately without manual credential setup.
37
+ *
38
+ * **Security Notes**:
39
+ * - Rate limiting is applied to prevent abuse
40
+ * - Only works with Varity L3 Testnet (Chain ID 33529)
41
+ * - Not suitable for production use
42
+ * - May be rotated periodically
43
+ *
44
+ * **When to Upgrade**:
45
+ * - Moving to production
46
+ * - Need custom branding in auth flows
47
+ * - Require higher rate limits
48
+ * - Building on non-Varity chains
49
+ */
50
+ /**
51
+ * VARITY_DEV_CREDENTIALS - Loaded from Credential Proxy or Environment Variables
52
+ *
53
+ * SECURITY: Credentials are NO LONGER hardcoded in this file.
54
+ * They are fetched from:
55
+ * 1. Varity Credential Proxy (api.varity.so/credentials) - Recommended
56
+ * 2. Environment variables (VARITY_PRIVY_APP_ID, VARITY_THIRDWEB_CLIENT_ID)
57
+ *
58
+ * The credential proxy ensures credentials are never exposed in client bundles.
59
+ */
60
+ export declare const VARITY_DEV_CREDENTIALS: {
61
+ /**
62
+ * Privy configuration
63
+ *
64
+ * Privy provides authentication (email, social, wallet).
65
+ * Get your own credentials at: https://dashboard.privy.io
66
+ */
67
+ readonly privy: {
68
+ /**
69
+ * Privy App ID - loaded from environment variable
70
+ *
71
+ * Set VARITY_PRIVY_APP_ID in your environment
72
+ * Or use the Varity Credential Proxy for automatic credentials
73
+ */
74
+ readonly appId: string;
75
+ };
76
+ /**
77
+ * thirdweb configuration
78
+ *
79
+ * thirdweb provides blockchain infrastructure (chain abstraction, contracts, storage).
80
+ * Get your own credentials at: https://thirdweb.com/dashboard
81
+ */
82
+ readonly thirdweb: {
83
+ /**
84
+ * thirdweb Client ID - loaded from environment variable
85
+ *
86
+ * Set VARITY_THIRDWEB_CLIENT_ID in your environment
87
+ * Or use the Varity Credential Proxy for automatic credentials
88
+ */
89
+ readonly clientId: string;
90
+ };
91
+ /**
92
+ * Rate limiting information (informational only)
93
+ */
94
+ readonly rateLimits: {
95
+ readonly privy: {
96
+ readonly monthlyActiveUsers: 1000;
97
+ readonly note: "Shared via Varity Credential Proxy";
98
+ };
99
+ readonly thirdweb: {
100
+ readonly requestsPerSecond: 100;
101
+ readonly note: "Shared via Varity Credential Proxy";
102
+ };
103
+ };
104
+ };
105
+ /**
106
+ * Type definition for credential configuration
107
+ */
108
+ export interface CredentialConfig {
109
+ privy: {
110
+ appId: string;
111
+ };
112
+ thirdweb: {
113
+ clientId: string;
114
+ };
115
+ }
116
+ /**
117
+ * Check if using shared development credentials
118
+ *
119
+ * @param appId - Privy app ID to check
120
+ * @param clientId - thirdweb client ID to check
121
+ * @returns true if using shared development credentials
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * if (isUsingDevCredentials(appId, clientId)) {
126
+ * console.warn('Using shared dev credentials - upgrade for production');
127
+ * }
128
+ * ```
129
+ */
130
+ export declare function isUsingDevCredentials(appId?: string, clientId?: string): boolean;
131
+ /**
132
+ * Check if credentials are suitable for production use
133
+ *
134
+ * @param appId - Privy app ID to check
135
+ * @param clientId - thirdweb client ID to check
136
+ * @returns true if credentials are production-ready
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * if (!isProductionCredentials(appId, clientId)) {
141
+ * throw new Error('Production requires custom credentials');
142
+ * }
143
+ * ```
144
+ */
145
+ export declare function isProductionCredentials(appId?: string, clientId?: string): boolean;
146
+ /**
147
+ * Get warning message for development credential usage
148
+ *
149
+ * @param environment - Current environment (development, staging, production)
150
+ * @returns Warning message or null (deprecated - always returns null)
151
+ *
152
+ * @deprecated This function is deprecated. Varity now uses credential proxy
153
+ * and provides a seamless experience without warnings.
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * const warning = getCredentialWarning('production');
158
+ * // Always returns null now
159
+ * ```
160
+ */
161
+ export declare function getCredentialWarning(environment: 'development' | 'staging' | 'production'): string | null;
162
+ /**
163
+ * Log development credential usage warning
164
+ *
165
+ * @param appId - Privy app ID being used
166
+ * @param clientId - thirdweb client ID being used
167
+ * @param usingProxy - Whether credentials are from proxy (suppresses warnings)
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * logCredentialUsage(appId, clientId);
172
+ * // Logs friendly message if using shared dev credentials
173
+ * ```
174
+ */
175
+ export declare function logCredentialUsage(appId?: string, clientId?: string, usingProxy?: boolean): void;
176
+ /**
177
+ * Resolve credentials with fallback to dev credentials
178
+ *
179
+ * @param appId - Custom Privy app ID (optional)
180
+ * @param clientId - Custom thirdweb client ID (optional)
181
+ * @param usingProxy - Whether credentials are from proxy (suppresses warnings)
182
+ * @returns Resolved credential configuration
183
+ *
184
+ * @example
185
+ * ```typescript
186
+ * const creds = resolveCredentials(customAppId, customClientId);
187
+ * // Falls back to VARITY_DEV_CREDENTIALS if custom credentials not provided
188
+ * ```
189
+ */
190
+ export declare function resolveCredentials(appId?: string, clientId?: string, usingProxy?: boolean): CredentialConfig;
191
+ /**
192
+ * Validate credentials are configured correctly
193
+ *
194
+ * @param appId - Privy app ID to validate
195
+ * @param clientId - thirdweb client ID to validate
196
+ * @throws Error if credentials are invalid
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * try {
201
+ * validateCredentials(appId, clientId);
202
+ * } catch (error) {
203
+ * console.error('Invalid credentials:', error.message);
204
+ * }
205
+ * ```
206
+ */
207
+ export declare function validateCredentials(appId: string, clientId: string): void;
208
+ /**
209
+ * Get upgrade instructions for production
210
+ *
211
+ * @returns Markdown-formatted upgrade instructions
212
+ *
213
+ * @example
214
+ * ```typescript
215
+ * console.log(getUpgradeInstructions());
216
+ * ```
217
+ */
218
+ export declare function getUpgradeInstructions(): string;
219
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB;IACjC;;;;;OAKG;;QAED;;;;;WAKG;;;IAIL;;;;;OAKG;;QAED;;;;;WAKG;;;IAIL;;OAEG;;;;;;;;;;;CAWK,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAKT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAET;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,GACpD,MAAM,GAAG,IAAI,CAIf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,GAAE,OAAe,GAC1B,IAAI,CAiBN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,GAAE,OAAe,GAC1B,gBAAgB,CAuClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,IAAI,CAmBN;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAuE/C"}