@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,250 @@
1
+ /**
2
+ * Example usage of Varity Tiering System
3
+ *
4
+ * This example demonstrates the complete integration of all tiering components.
5
+ */
6
+ import { TieringEngine, AccessAnalyzer, CostOptimizer, MetadataStore, DEFAULT_DEPIN_COST_MODELS, MetadataBackend, TieringPolicy, StorageTier, StorageLayer } from './index';
7
+ async function main() {
8
+ console.log('๐Ÿš€ Varity Intelligent Tiering System - Demo\n');
9
+ // ========================================================================
10
+ // 1. Initialize MetadataStore
11
+ // ========================================================================
12
+ console.log('๐Ÿ“ฆ Initializing MetadataStore...');
13
+ const metadataStore = new MetadataStore({
14
+ backend: MetadataBackend.MEMORY,
15
+ enableBackups: false
16
+ });
17
+ await metadataStore.initialize();
18
+ console.log('โœ… MetadataStore initialized\n');
19
+ // ========================================================================
20
+ // 2. Initialize AccessAnalyzer
21
+ // ========================================================================
22
+ console.log('๐Ÿ“Š Initializing AccessAnalyzer...');
23
+ const accessAnalyzer = new AccessAnalyzer({
24
+ maxRecordsPerObject: 1000,
25
+ recentAccessWindow: 24,
26
+ enablePrediction: true,
27
+ minAccessesForPrediction: 5
28
+ });
29
+ console.log('โœ… AccessAnalyzer initialized\n');
30
+ // ========================================================================
31
+ // 3. Initialize CostOptimizer
32
+ // ========================================================================
33
+ console.log('๐Ÿ’ฐ Initializing CostOptimizer...');
34
+ const costOptimizer = new CostOptimizer({
35
+ tierCosts: DEFAULT_DEPIN_COST_MODELS,
36
+ optimizationThreshold: 0.5
37
+ });
38
+ console.log('โœ… CostOptimizer initialized\n');
39
+ // ========================================================================
40
+ // 4. Initialize TieringEngine
41
+ // ========================================================================
42
+ console.log('โš™๏ธ Initializing TieringEngine...');
43
+ const tieringEngine = new TieringEngine({
44
+ policy: TieringPolicy.COST_OPTIMIZED,
45
+ rules: [
46
+ {
47
+ name: 'archive-old-files',
48
+ condition: {
49
+ type: 'age',
50
+ operator: 'gt',
51
+ value: 90,
52
+ unit: 'days'
53
+ },
54
+ action: {
55
+ moveTo: StorageTier.GLACIER
56
+ },
57
+ priority: 1,
58
+ enabled: true
59
+ },
60
+ {
61
+ name: 'demote-inactive',
62
+ condition: {
63
+ type: 'last_accessed',
64
+ operator: 'gt',
65
+ value: 30,
66
+ unit: 'days'
67
+ },
68
+ action: {
69
+ moveTo: StorageTier.COLD
70
+ },
71
+ priority: 2,
72
+ enabled: true
73
+ }
74
+ ],
75
+ tierCosts: {
76
+ [StorageTier.HOT]: 0.002,
77
+ [StorageTier.WARM]: 0.0015,
78
+ [StorageTier.COLD]: 0.001,
79
+ [StorageTier.GLACIER]: 0.0005
80
+ }
81
+ });
82
+ console.log('โœ… TieringEngine initialized\n');
83
+ // ========================================================================
84
+ // 5. Simulate object uploads and access patterns
85
+ // ========================================================================
86
+ console.log('๐Ÿ“ค Simulating object uploads...');
87
+ const objects = [
88
+ {
89
+ id: 'hot-obj-1',
90
+ size: 10 * 1024 * 1024, // 10 MB
91
+ tier: StorageTier.HOT,
92
+ ageInDays: 5,
93
+ lastAccessedDays: 0,
94
+ accessCount: 100
95
+ },
96
+ {
97
+ id: 'warm-obj-1',
98
+ size: 50 * 1024 * 1024, // 50 MB
99
+ tier: StorageTier.HOT,
100
+ ageInDays: 20,
101
+ lastAccessedDays: 10,
102
+ accessCount: 20
103
+ },
104
+ {
105
+ id: 'cold-obj-1',
106
+ size: 100 * 1024 * 1024, // 100 MB
107
+ tier: StorageTier.HOT,
108
+ ageInDays: 50,
109
+ lastAccessedDays: 40,
110
+ accessCount: 5
111
+ },
112
+ {
113
+ id: 'archive-obj-1',
114
+ size: 500 * 1024 * 1024, // 500 MB
115
+ tier: StorageTier.HOT,
116
+ ageInDays: 120,
117
+ lastAccessedDays: 100,
118
+ accessCount: 1
119
+ }
120
+ ];
121
+ // Create metadata for each object
122
+ for (const obj of objects) {
123
+ const now = Date.now();
124
+ const metadata = {
125
+ identifier: obj.id,
126
+ tier: obj.tier,
127
+ layer: StorageLayer.CUSTOMER_DATA,
128
+ size: obj.size,
129
+ createdAt: new Date(now - obj.ageInDays * 24 * 60 * 60 * 1000),
130
+ lastAccessed: new Date(now - obj.lastAccessedDays * 24 * 60 * 60 * 1000),
131
+ accessCount: obj.accessCount
132
+ };
133
+ await metadataStore.save(obj.id, metadata);
134
+ // Simulate access records
135
+ for (let i = 0; i < obj.accessCount; i++) {
136
+ accessAnalyzer.recordAccess({
137
+ identifier: obj.id,
138
+ timestamp: new Date(now - (i * obj.ageInDays * 24 * 60 * 60 * 1000) / obj.accessCount),
139
+ type: 'read',
140
+ bytesTransferred: obj.size / 10,
141
+ durationMs: 50
142
+ });
143
+ }
144
+ }
145
+ console.log(`โœ… Created ${objects.length} objects\n`);
146
+ // ========================================================================
147
+ // 6. Analyze access patterns
148
+ // ========================================================================
149
+ console.log('๐Ÿ” Analyzing access patterns...\n');
150
+ for (const obj of objects) {
151
+ const stats = accessAnalyzer.getAccessStats(obj.id);
152
+ const prediction = accessAnalyzer.predictAccessProbability(obj.id);
153
+ console.log(`Object: ${obj.id}`);
154
+ console.log(` Total accesses: ${stats.totalAccesses}`);
155
+ console.log(` Trend: ${stats.trend}`);
156
+ console.log(` Predicted tier: ${prediction.recommendedTier}`);
157
+ console.log(` Confidence: ${(prediction.confidence * 100).toFixed(1)}%\n`);
158
+ }
159
+ // ========================================================================
160
+ // 7. Calculate costs and optimization opportunities
161
+ // ========================================================================
162
+ console.log('๐Ÿ’ฐ Calculating costs and optimization opportunities...\n');
163
+ const allMetadata = await metadataStore.listAll();
164
+ const metadataArray = Array.from(allMetadata.values());
165
+ const objectsWithPatterns = metadataArray.map(metadata => ({
166
+ identifier: metadata.identifier,
167
+ size: metadata.size,
168
+ tier: metadata.tier,
169
+ accessPattern: accessAnalyzer.getAccessPattern(metadata.identifier, metadata.tier, metadata.size, {
170
+ [StorageTier.HOT]: 0.002,
171
+ [StorageTier.WARM]: 0.0015,
172
+ [StorageTier.COLD]: 0.001,
173
+ [StorageTier.GLACIER]: 0.0005
174
+ })
175
+ }));
176
+ const totalCost = costOptimizer.calculateTotalCost(objectsWithPatterns);
177
+ console.log(`Current Monthly Cost: $${totalCost.totalMonthlyCost.toFixed(2)}`);
178
+ console.log('\nCost by Tier:');
179
+ for (const [tier, stats] of Object.entries(totalCost.byTier)) {
180
+ console.log(` ${tier}: ${stats.count} objects, $${stats.cost.toFixed(2)}/month`);
181
+ }
182
+ console.log(`\nOptimization Opportunities: ${totalCost.optimizationOpportunities.length}`);
183
+ for (const opp of totalCost.optimizationOpportunities) {
184
+ console.log(` ${opp.identifier}: ${opp.currentTier} โ†’ ${opp.optimalTier}`);
185
+ console.log(` Savings: $${opp.monthlySavings.toFixed(2)}/month`);
186
+ }
187
+ console.log();
188
+ // ========================================================================
189
+ // 8. Run tiering cycle
190
+ // ========================================================================
191
+ console.log('๐Ÿ”„ Running tiering cycle...\n');
192
+ const cycleResult = await tieringEngine.runTieringCycle(metadataArray, (current, total) => {
193
+ // Progress callback
194
+ if (current === total) {
195
+ console.log(`Progress: ${current}/${total} objects evaluated`);
196
+ }
197
+ });
198
+ console.log('\nTiering Cycle Results:');
199
+ console.log(` Objects evaluated: ${cycleResult.objectsEvaluated}`);
200
+ console.log(` Objects promoted: ${cycleResult.objectsPromoted}`);
201
+ console.log(` Objects demoted: ${cycleResult.objectsDemoted}`);
202
+ console.log(` Estimated monthly savings: $${cycleResult.estimatedMonthlySavings.toFixed(2)}`);
203
+ console.log(` Duration: ${cycleResult.durationMs}ms`);
204
+ console.log(` Average confidence: ${(cycleResult.statistics.avgConfidence * 100).toFixed(1)}%`);
205
+ console.log('\nTier Distribution:');
206
+ console.log(' Before:', cycleResult.statistics.tierDistributionBefore);
207
+ console.log(' After:', cycleResult.statistics.tierDistributionAfter);
208
+ if (cycleResult.errors.length > 0) {
209
+ console.log(`\nโš ๏ธ Errors: ${cycleResult.errors.length}`);
210
+ for (const error of cycleResult.errors) {
211
+ console.log(` ${error.identifier}: ${error.error}`);
212
+ }
213
+ }
214
+ // ========================================================================
215
+ // 9. Get statistics
216
+ // ========================================================================
217
+ console.log('\n๐Ÿ“ˆ Final Statistics:\n');
218
+ const stats = await metadataStore.getStats();
219
+ console.log('Storage Statistics:');
220
+ console.log(` Total entries: ${stats.totalEntries}`);
221
+ console.log(` Total size: ${(stats.totalSize / (1024 * 1024)).toFixed(2)} MB`);
222
+ console.log(' By tier:', stats.byTier);
223
+ console.log(' By layer:', stats.byLayer);
224
+ // Hot spots
225
+ const hotSpots = accessAnalyzer.getHotSpots(3, 24);
226
+ console.log(`\n๐Ÿ”ฅ Top ${hotSpots.length} Hot Spots:`);
227
+ for (const spot of hotSpots) {
228
+ console.log(` ${spot.identifier}: ${spot.stats.totalAccesses} accesses`);
229
+ }
230
+ // Cold objects
231
+ const coldObjects = accessAnalyzer.getColdObjects(3, 7 * 24);
232
+ console.log(`\nโ„๏ธ Top ${coldObjects.length} Cold Objects:`);
233
+ for (const cold of coldObjects) {
234
+ console.log(` ${cold.identifier}: ${cold.stats.totalAccesses} accesses`);
235
+ }
236
+ // ========================================================================
237
+ // 10. Cleanup
238
+ // ========================================================================
239
+ console.log('\n๐Ÿงน Cleaning up...');
240
+ metadataStore.destroy();
241
+ console.log('โœ… Cleanup complete\n');
242
+ console.log('='.repeat(60));
243
+ console.log('โœจ Demo completed successfully!');
244
+ console.log('='.repeat(60));
245
+ }
246
+ // Run the demo
247
+ if (require.main === module) {
248
+ main().catch(console.error);
249
+ }
250
+ export { main };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Varity SDK - Tiering Module
3
+ *
4
+ * Complete intelligent tiering system for storage cost optimization.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { StorageTier, StorageLayer, TieringPolicy } from '@varity-labs/types';
9
+ export { TieringEngine } from './TieringEngine';
10
+ export type { TieringMetadata, TieringDecision, TieringCycleResult, TieringCycleStats, TieringError, TieringEngineConfig } from './TieringEngine';
11
+ export { AccessAnalyzer } from './AccessAnalyzer';
12
+ export type { AccessRecord, AccessStats, TimeWindow, AccessPrediction, AccessAnalyzerConfig } from './AccessAnalyzer';
13
+ export { CostOptimizer, DEFAULT_DEPIN_COST_MODELS, AWS_S3_COST_MODELS } from './CostOptimizer';
14
+ export type { TierCostModel, CostBreakdown, OptimizationResult, WhatIfScenario, WhatIfResult, CostOptimizerConfig } from './CostOptimizer';
15
+ export { MetadataStore, MetadataBackend } from './MetadataStore';
16
+ export type { TieringMetadata as StoredTieringMetadata, TierTransition, MetadataQueryOptions, BatchUpdate, MetadataStoreConfig, MetadataStoreStats } from './MetadataStore';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/storage/tiering/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,YAAY,EACV,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACpB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC9F,YAAY,EACV,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACpB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAChE,YAAY,EACV,eAAe,IAAI,qBAAqB,EACxC,cAAc,EACd,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Varity SDK - Tiering Module
3
+ *
4
+ * Complete intelligent tiering system for storage cost optimization.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ // Re-export core types from @varity-labs/types
9
+ export { StorageTier, StorageLayer, TieringPolicy } from '@varity-labs/types';
10
+ export { TieringEngine } from './TieringEngine';
11
+ export { AccessAnalyzer } from './AccessAnalyzer';
12
+ export { CostOptimizer, DEFAULT_DEPIN_COST_MODELS, AWS_S3_COST_MODELS } from './CostOptimizer';
13
+ export { MetadataStore, MetadataBackend } from './MetadataStore';