@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,287 @@
1
+ /**
2
+ * Varity SDK - Storage Adapter Interface
3
+ *
4
+ * Base interface that ALL storage backends must implement to ensure
5
+ * consistent behavior across Filecoin, S3, GCS, and multi-tier storage.
6
+ *
7
+ * This interface provides a unified API for storage operations regardless
8
+ * of the underlying backend, enabling seamless migration and multi-backend support.
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ import type { StorageBackend, UploadOptions, StorageResult, StorageItem, ListOptions, StorageMetadata } from '@varity-labs/types';
13
+ /**
14
+ * Base storage adapter interface
15
+ *
16
+ * All storage backends (Filecoin/IPFS, S3-compatible, GCS-compatible, Multi-tier)
17
+ * MUST implement this interface to ensure consistent behavior across the SDK.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * class FilecoinStorageAdapter implements IStorageAdapter {
22
+ * async upload(data: Buffer | string, options: UploadOptions): Promise<StorageResult> {
23
+ * // Implementation for Filecoin/IPFS
24
+ * }
25
+ * // ... other methods
26
+ * }
27
+ * ```
28
+ */
29
+ export interface IStorageAdapter {
30
+ /**
31
+ * Upload data to storage backend
32
+ *
33
+ * @param data - Data to upload (Buffer for binary, string for text, Blob for files)
34
+ * @param options - Upload configuration including layer, tier, metadata, encryption
35
+ * @returns Storage result with identifier (CID, S3 key, etc.) and metadata
36
+ *
37
+ * @throws {Error} If upload fails due to network, authentication, or size limits
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const result = await adapter.upload(Buffer.from('Hello World'), {
42
+ * layer: StorageLayer.CUSTOMER_DATA,
43
+ * tier: StorageTier.HOT,
44
+ * encrypt: true,
45
+ * metadata: { contentType: 'text/plain' }
46
+ * })
47
+ * console.log('Uploaded:', result.identifier)
48
+ * ```
49
+ */
50
+ upload(data: Buffer | string | Blob, options: UploadOptions): Promise<StorageResult>;
51
+ /**
52
+ * Download data from storage backend
53
+ *
54
+ * @param identifier - Storage identifier (CID for Filecoin, key for S3/GCS)
55
+ * @returns Downloaded data as Buffer
56
+ *
57
+ * @throws {Error} If object not found or download fails
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const data = await adapter.download('QmXYZ...')
62
+ * const text = data.toString('utf-8')
63
+ * ```
64
+ */
65
+ download(identifier: string): Promise<Buffer>;
66
+ /**
67
+ * Delete data from storage backend
68
+ *
69
+ * @param identifier - Storage identifier to delete
70
+ *
71
+ * @throws {Error} If deletion fails or object not found
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * await adapter.delete('QmXYZ...')
76
+ * console.log('Deleted successfully')
77
+ * ```
78
+ */
79
+ delete(identifier: string): Promise<void>;
80
+ /**
81
+ * Check if object exists in storage
82
+ *
83
+ * @param identifier - Storage identifier to check
84
+ * @returns True if object exists, false otherwise
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * if (await adapter.exists('QmXYZ...')) {
89
+ * console.log('Object exists')
90
+ * }
91
+ * ```
92
+ */
93
+ exists(identifier: string): Promise<boolean>;
94
+ /**
95
+ * List stored objects matching criteria
96
+ *
97
+ * Supports pagination, prefix filtering, and metadata inclusion.
98
+ *
99
+ * @param options - List filtering and pagination options
100
+ * @returns Array of storage items with metadata
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * const items = await adapter.list({
105
+ * prefix: 'customer-123/',
106
+ * maxResults: 100,
107
+ * tier: StorageTier.HOT
108
+ * })
109
+ * console.log(`Found ${items.length} objects`)
110
+ * ```
111
+ */
112
+ list(options?: ListOptions): Promise<StorageItem[]>;
113
+ /**
114
+ * Get object metadata without downloading content
115
+ *
116
+ * Useful for checking size, modified time, and custom metadata
117
+ * without incurring bandwidth costs.
118
+ *
119
+ * @param identifier - Storage identifier
120
+ * @returns Object metadata including size, timestamps, tier
121
+ *
122
+ * @throws {Error} If object not found
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * const metadata = await adapter.getMetadata('QmXYZ...')
127
+ * console.log(`Size: ${metadata.size} bytes`)
128
+ * console.log(`Tier: ${metadata.tier}`)
129
+ * ```
130
+ */
131
+ getMetadata(identifier: string): Promise<StorageMetadata>;
132
+ /**
133
+ * Get the storage backend type
134
+ *
135
+ * @returns Storage backend enum value
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * const backend = adapter.getBackendType()
140
+ * if (backend === StorageBackend.FILECOIN_IPFS) {
141
+ * console.log('Using Filecoin/IPFS')
142
+ * }
143
+ * ```
144
+ */
145
+ getBackendType(): StorageBackend;
146
+ /**
147
+ * Copy object from one location to another (optional)
148
+ *
149
+ * Not all backends support efficient server-side copy.
150
+ * If not implemented, will throw UnsupportedOperationError.
151
+ *
152
+ * @param source - Source identifier
153
+ * @param destination - Destination identifier
154
+ *
155
+ * @throws {UnsupportedOperationError} If backend doesn't support copy
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * try {
160
+ * await adapter.copy('source-key', 'destination-key')
161
+ * } catch (err) {
162
+ * if (err.name === 'UnsupportedOperationError') {
163
+ * // Fallback to download + upload
164
+ * }
165
+ * }
166
+ * ```
167
+ */
168
+ copy?(source: string, destination: string): Promise<void>;
169
+ /**
170
+ * Move object from one location to another (optional)
171
+ *
172
+ * Not all backends support efficient server-side move.
173
+ * If not implemented, will throw UnsupportedOperationError.
174
+ *
175
+ * @param source - Source identifier
176
+ * @param destination - Destination identifier
177
+ *
178
+ * @throws {UnsupportedOperationError} If backend doesn't support move
179
+ *
180
+ * @example
181
+ * ```typescript
182
+ * await adapter.move('old-key', 'new-key')
183
+ * ```
184
+ */
185
+ move?(source: string, destination: string): Promise<void>;
186
+ /**
187
+ * Get object access URL (optional)
188
+ *
189
+ * Returns a publicly accessible URL for the object.
190
+ * For backends that support presigned URLs, this generates one.
191
+ *
192
+ * @param identifier - Storage identifier
193
+ * @param expiresIn - Expiration time in seconds (for presigned URLs)
194
+ * @returns Gateway URL or presigned URL
195
+ *
196
+ * @example
197
+ * ```typescript
198
+ * const url = await adapter.getAccessUrl('QmXYZ...', 3600)
199
+ * console.log('Download URL:', url)
200
+ * ```
201
+ */
202
+ getAccessUrl?(identifier: string, expiresIn?: number): Promise<string>;
203
+ /**
204
+ * Update object metadata (optional)
205
+ *
206
+ * Not all backends support metadata updates without re-uploading.
207
+ *
208
+ * @param identifier - Storage identifier
209
+ * @param metadata - New metadata to apply
210
+ *
211
+ * @throws {UnsupportedOperationError} If backend doesn't support metadata updates
212
+ *
213
+ * @example
214
+ * ```typescript
215
+ * await adapter.updateMetadata('QmXYZ...', {
216
+ * contentType: 'application/json',
217
+ * customKey: 'customValue'
218
+ * })
219
+ * ```
220
+ */
221
+ updateMetadata?(identifier: string, metadata: Record<string, any>): Promise<void>;
222
+ /**
223
+ * Get storage backend health status (optional)
224
+ *
225
+ * @returns Health check result with availability and latency
226
+ *
227
+ * @example
228
+ * ```typescript
229
+ * const health = await adapter.healthCheck()
230
+ * console.log(`Backend ${health.healthy ? 'healthy' : 'unhealthy'}`)
231
+ * console.log(`Latency: ${health.latencyMs}ms`)
232
+ * ```
233
+ */
234
+ healthCheck?(): Promise<{
235
+ healthy: boolean;
236
+ latencyMs: number;
237
+ error?: string;
238
+ }>;
239
+ }
240
+ /**
241
+ * Error thrown when an operation is not supported by the backend
242
+ */
243
+ export declare class UnsupportedOperationError extends Error {
244
+ constructor(operation: string, backend: StorageBackend);
245
+ }
246
+ /**
247
+ * Base abstract class implementing common adapter functionality
248
+ *
249
+ * Adapters can extend this class to inherit common behavior
250
+ * and only implement backend-specific methods.
251
+ */
252
+ export declare abstract class BaseStorageAdapter implements IStorageAdapter {
253
+ protected backend: StorageBackend;
254
+ constructor(backend: StorageBackend);
255
+ abstract upload(data: Buffer | string | Blob, options: UploadOptions): Promise<StorageResult>;
256
+ abstract download(identifier: string): Promise<Buffer>;
257
+ abstract delete(identifier: string): Promise<void>;
258
+ abstract exists(identifier: string): Promise<boolean>;
259
+ abstract list(options?: ListOptions): Promise<StorageItem[]>;
260
+ abstract getMetadata(identifier: string): Promise<StorageMetadata>;
261
+ getBackendType(): StorageBackend;
262
+ /**
263
+ * Default copy implementation (download + upload)
264
+ */
265
+ copy(source: string, destination: string): Promise<void>;
266
+ /**
267
+ * Default move implementation (copy + delete)
268
+ */
269
+ move(source: string, destination: string): Promise<void>;
270
+ /**
271
+ * Default getAccessUrl implementation
272
+ */
273
+ getAccessUrl(identifier: string, expiresIn?: number): Promise<string>;
274
+ /**
275
+ * Default updateMetadata implementation
276
+ */
277
+ updateMetadata(identifier: string, metadata: Record<string, any>): Promise<void>;
278
+ /**
279
+ * Default healthCheck implementation
280
+ */
281
+ healthCheck(): Promise<{
282
+ healthy: boolean;
283
+ latencyMs: number;
284
+ error?: string;
285
+ }>;
286
+ }
287
+ //# sourceMappingURL=IStorageAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IStorageAdapter.d.ts","sourceRoot":"","sources":["../../../../src/modules/storage/adapters/IStorageAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Varity SDK - Storage Adapter Interface
3
+ *
4
+ * Base interface that ALL storage backends must implement to ensure
5
+ * consistent behavior across Filecoin, S3, GCS, and multi-tier storage.
6
+ *
7
+ * This interface provides a unified API for storage operations regardless
8
+ * of the underlying backend, enabling seamless migration and multi-backend support.
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ /**
13
+ * Error thrown when an operation is not supported by the backend
14
+ */
15
+ export class UnsupportedOperationError extends Error {
16
+ constructor(operation, backend) {
17
+ super(`Operation '${operation}' is not supported by backend '${backend}'`);
18
+ this.name = 'UnsupportedOperationError';
19
+ }
20
+ }
21
+ /**
22
+ * Base abstract class implementing common adapter functionality
23
+ *
24
+ * Adapters can extend this class to inherit common behavior
25
+ * and only implement backend-specific methods.
26
+ */
27
+ export class BaseStorageAdapter {
28
+ constructor(backend) {
29
+ this.backend = backend;
30
+ }
31
+ getBackendType() {
32
+ return this.backend;
33
+ }
34
+ /**
35
+ * Default copy implementation (download + upload)
36
+ */
37
+ async copy(source, destination) {
38
+ throw new UnsupportedOperationError('copy', this.backend);
39
+ }
40
+ /**
41
+ * Default move implementation (copy + delete)
42
+ */
43
+ async move(source, destination) {
44
+ throw new UnsupportedOperationError('move', this.backend);
45
+ }
46
+ /**
47
+ * Default getAccessUrl implementation
48
+ */
49
+ async getAccessUrl(identifier, expiresIn) {
50
+ throw new UnsupportedOperationError('getAccessUrl', this.backend);
51
+ }
52
+ /**
53
+ * Default updateMetadata implementation
54
+ */
55
+ async updateMetadata(identifier, metadata) {
56
+ throw new UnsupportedOperationError('updateMetadata', this.backend);
57
+ }
58
+ /**
59
+ * Default healthCheck implementation
60
+ */
61
+ async healthCheck() {
62
+ const start = Date.now();
63
+ try {
64
+ // Try to list a single item to check connectivity
65
+ await this.list({ maxResults: 1 });
66
+ return {
67
+ healthy: true,
68
+ latencyMs: Date.now() - start
69
+ };
70
+ }
71
+ catch (error) {
72
+ return {
73
+ healthy: false,
74
+ latencyMs: Date.now() - start,
75
+ error: error instanceof Error ? error.message : 'Unknown error'
76
+ };
77
+ }
78
+ }
79
+ }
80
+ // All exports already declared above (IStorageAdapter interface on line 40,
81
+ // UnsupportedOperationError and BaseStorageAdapter classes on lines 266 and 279)
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Varity SDK - Multi-Tier Storage Adapter
3
+ *
4
+ * Implements intelligent hot/cold storage tiering with automatic promotion/demotion
5
+ * based on access patterns. Optimizes costs while maintaining performance.
6
+ */
7
+ import type { VaritySDK } from '../../../core/VaritySDK';
8
+ import { StorageTier, type UploadOptions, type StorageResult, type StorageItem, type ListOptions, type StorageMetadata, type MultiTierStorageConfig } from '@varity-labs/types';
9
+ import { BaseStorageAdapter } from './IStorageAdapter';
10
+ /**
11
+ * Multi-tier storage adapter with automatic cost optimization
12
+ *
13
+ * Features:
14
+ * - Hot/Cold tier management
15
+ * - Automatic tier transitions based on access patterns
16
+ * - Access tracking and analytics
17
+ * - Cost optimization through intelligent tiering
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const config: MultiTierStorageConfig = {
22
+ * hotTier: { backend: StorageBackend.FILECOIN_IPFS, replication: 3 },
23
+ * coldTier: { backend: StorageBackend.FILECOIN_IPFS, replication: 2 },
24
+ * autoTiering: {
25
+ * enabled: true,
26
+ * policy: TieringPolicy.ACCESS_BASED,
27
+ * checkInterval: 24
28
+ * }
29
+ * }
30
+ * const adapter = new MultiTierAdapter(sdk, config)
31
+ * ```
32
+ */
33
+ export declare class MultiTierAdapter extends BaseStorageAdapter {
34
+ private sdk;
35
+ private hotTierAdapter;
36
+ private coldTierAdapter;
37
+ private config;
38
+ private tieringMetadata;
39
+ private autoTieringInterval;
40
+ constructor(sdk: VaritySDK, config: MultiTierStorageConfig);
41
+ /**
42
+ * Upload to appropriate tier based on options or auto-tiering rules
43
+ *
44
+ * @param data - Data to upload
45
+ * @param options - Upload options
46
+ * @returns Storage result with tier information
47
+ */
48
+ upload(data: Buffer | string | Blob, options: UploadOptions): Promise<StorageResult>;
49
+ /**
50
+ * Download from appropriate tier, update access metadata
51
+ *
52
+ * @param identifier - Storage identifier
53
+ * @returns Downloaded data
54
+ */
55
+ download(identifier: string): Promise<Buffer>;
56
+ /**
57
+ * Delete from all tiers
58
+ *
59
+ * @param identifier - Storage identifier
60
+ */
61
+ delete(identifier: string): Promise<void>;
62
+ /**
63
+ * Check if object exists in any tier
64
+ *
65
+ * @param identifier - Storage identifier
66
+ * @returns True if exists
67
+ */
68
+ exists(identifier: string): Promise<boolean>;
69
+ /**
70
+ * List objects across all tiers
71
+ *
72
+ * @param options - List options
73
+ * @returns Array of storage items
74
+ */
75
+ list(options?: ListOptions): Promise<StorageItem[]>;
76
+ /**
77
+ * Get metadata for an object
78
+ *
79
+ * @param identifier - Storage identifier
80
+ * @returns Storage metadata
81
+ */
82
+ getMetadata(identifier: string): Promise<StorageMetadata>;
83
+ /**
84
+ * Promote object to a hotter tier
85
+ *
86
+ * @param identifier - Storage identifier
87
+ * @param targetTier - Target tier
88
+ */
89
+ promoteTier(identifier: string, targetTier: StorageTier): Promise<void>;
90
+ /**
91
+ * Demote object to a colder tier (for cost optimization)
92
+ *
93
+ * @param identifier - Storage identifier
94
+ * @param targetTier - Target tier
95
+ */
96
+ demoteTier(identifier: string, targetTier: StorageTier): Promise<void>;
97
+ /**
98
+ * Get access URL for an object
99
+ *
100
+ * @param identifier - Storage identifier
101
+ * @param expiresIn - Expiration time in seconds
102
+ * @returns Gateway URL
103
+ */
104
+ getAccessUrl(identifier: string, expiresIn?: number): Promise<string>;
105
+ /**
106
+ * Health check for multi-tier backend
107
+ *
108
+ * @returns Combined health status
109
+ */
110
+ healthCheck(): Promise<{
111
+ healthy: boolean;
112
+ latencyMs: number;
113
+ error?: string;
114
+ }>;
115
+ /**
116
+ * Determine initial tier based on data size and options
117
+ *
118
+ * @param data - Data to upload
119
+ * @param options - Upload options
120
+ * @returns Recommended tier
121
+ */
122
+ private determineInitialTier;
123
+ /**
124
+ * Get adapter for a specific tier
125
+ *
126
+ * @param tier - Storage tier
127
+ * @returns Adapter instance
128
+ */
129
+ private getAdapterForTier;
130
+ /**
131
+ * Check if object should be promoted to hot tier
132
+ *
133
+ * @param metadata - Tiering metadata
134
+ * @returns True if should promote
135
+ */
136
+ private shouldPromote;
137
+ /**
138
+ * Check if object should be demoted to cold tier
139
+ *
140
+ * @param metadata - Tiering metadata
141
+ * @returns True if should demote
142
+ */
143
+ private shouldDemote;
144
+ /**
145
+ * Schedule promotion for an object
146
+ *
147
+ * @param identifier - Storage identifier
148
+ * @param targetTier - Target tier
149
+ */
150
+ private schedulePromotion;
151
+ /**
152
+ * Start auto-tiering background process
153
+ */
154
+ private startAutoTiering;
155
+ /**
156
+ * Stop auto-tiering background process
157
+ */
158
+ private stopAutoTiering;
159
+ /**
160
+ * Run auto-tiering checks for all objects
161
+ */
162
+ private runAutoTiering;
163
+ /**
164
+ * Persist metadata to storage
165
+ *
166
+ * @param identifier - Storage identifier
167
+ */
168
+ private persistMetadata;
169
+ /**
170
+ * Load metadata from storage
171
+ *
172
+ * @param identifier - Storage identifier
173
+ * @returns Tiering metadata or null
174
+ */
175
+ private loadMetadata;
176
+ /**
177
+ * Delete metadata from storage
178
+ *
179
+ * @param identifier - Storage identifier
180
+ */
181
+ private deleteMetadata;
182
+ /**
183
+ * Clean up resources
184
+ */
185
+ destroy(): void;
186
+ }
187
+ //# sourceMappingURL=MultiTierAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiTierAdapter.d.ts","sourceRoot":"","sources":["../../../../src/modules/storage/adapters/MultiTierAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAGL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAetD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,mBAAmB,CAA8B;gBAE7C,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB;IAc1D;;;;;;OAMG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IA4B1F;;;;;OAKG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BnD;;;;OAIG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/C;;;;;OAKG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASlD;;;;;OAKG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAkBzD;;;;;OAKG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAe/D;;;;;OAKG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7E;;;;;OAKG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E;;;;;;OAMG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ3E;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA2BrF;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAKrB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;OAKG;YACW,iBAAiB;IAY/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;YACW,cAAc;IAc5B;;;;OAIG;YACW,eAAe;IAiB7B;;;;;OAKG;YACW,YAAY;IAwB1B;;;;OAIG;YACW,cAAc;IAS5B;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}