@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,319 @@
1
+ /**
2
+ * thirdweb x402 Payment Protocol Client
3
+ *
4
+ * Monetize APIs with blockchain micropayments
5
+ * Implements HTTP 402 (Payment Required) with crypto payments
6
+ *
7
+ * Features:
8
+ * - Pay-per-call API monetization
9
+ * - Automatic revenue splitting (70/30 model)
10
+ * - Usage tracking and analytics
11
+ * - Subscription-based access
12
+ * - Metered billing
13
+ * - Multi-chain support
14
+ */
15
+ import type { ThirdwebClient, Chain } from 'thirdweb';
16
+ /**
17
+ * x402 configuration
18
+ */
19
+ export interface x402Config {
20
+ /**
21
+ * thirdweb client instance
22
+ */
23
+ client: ThirdwebClient;
24
+ /**
25
+ * Revenue split recipients (addresses and percentages)
26
+ */
27
+ revenueSplit?: {
28
+ recipient: string;
29
+ percentage: number;
30
+ }[];
31
+ /**
32
+ * Default chain for payments
33
+ */
34
+ defaultChain?: Chain;
35
+ }
36
+ /**
37
+ * Payment endpoint configuration
38
+ */
39
+ export interface PaymentEndpointConfig {
40
+ /**
41
+ * API endpoint URL to monetize
42
+ */
43
+ url: string;
44
+ /**
45
+ * Price per API call (in tokens)
46
+ */
47
+ pricePerCall: string;
48
+ /**
49
+ * Payment token contract address
50
+ */
51
+ paymentToken: string;
52
+ /**
53
+ * Chain for payments
54
+ */
55
+ chain: Chain;
56
+ /**
57
+ * Revenue split configuration (overrides default)
58
+ */
59
+ revenueSplit?: {
60
+ recipient: string;
61
+ percentage: number;
62
+ }[];
63
+ /**
64
+ * Rate limit per user
65
+ */
66
+ rateLimit?: {
67
+ calls: number;
68
+ periodSeconds: number;
69
+ };
70
+ /**
71
+ * Free tier allowance
72
+ */
73
+ freeTier?: {
74
+ callsPerDay: number;
75
+ };
76
+ }
77
+ /**
78
+ * Payment stats for an endpoint
79
+ */
80
+ export interface PaymentStats {
81
+ /**
82
+ * Endpoint URL
83
+ */
84
+ url: string;
85
+ /**
86
+ * Total calls
87
+ */
88
+ totalCalls: number;
89
+ /**
90
+ * Total revenue earned (in tokens)
91
+ */
92
+ totalRevenue: string;
93
+ /**
94
+ * Unique payers
95
+ */
96
+ uniquePayers: number;
97
+ /**
98
+ * Average revenue per call
99
+ */
100
+ averageRevenuePerCall: string;
101
+ /**
102
+ * Revenue breakdown by recipient
103
+ */
104
+ revenueByRecipient: {
105
+ recipient: string;
106
+ amount: string;
107
+ percentage: number;
108
+ }[];
109
+ /**
110
+ * Time period
111
+ */
112
+ period: {
113
+ start: Date;
114
+ end: Date;
115
+ };
116
+ }
117
+ /**
118
+ * Usage record for tracking API consumption
119
+ */
120
+ export interface UsageRecord {
121
+ /**
122
+ * User/wallet address
123
+ */
124
+ user: string;
125
+ /**
126
+ * Endpoint URL
127
+ */
128
+ endpoint: string;
129
+ /**
130
+ * Timestamp
131
+ */
132
+ timestamp: Date;
133
+ /**
134
+ * Cost for this call
135
+ */
136
+ cost: string;
137
+ /**
138
+ * Payment transaction hash
139
+ */
140
+ txHash: string;
141
+ /**
142
+ * Request metadata
143
+ */
144
+ metadata?: {
145
+ method: string;
146
+ responseTime: number;
147
+ statusCode: number;
148
+ };
149
+ }
150
+ /**
151
+ * Subscription plan
152
+ */
153
+ export interface SubscriptionPlan {
154
+ /**
155
+ * Plan ID
156
+ */
157
+ id: string;
158
+ /**
159
+ * Plan name
160
+ */
161
+ name: string;
162
+ /**
163
+ * Price per period
164
+ */
165
+ price: string;
166
+ /**
167
+ * Payment token
168
+ */
169
+ paymentToken: string;
170
+ /**
171
+ * Billing period in days
172
+ */
173
+ periodDays: number;
174
+ /**
175
+ * Included API calls per period
176
+ */
177
+ includedCalls: number;
178
+ /**
179
+ * Price per additional call (beyond included)
180
+ */
181
+ overagePrice?: string;
182
+ /**
183
+ * Accessible endpoints
184
+ */
185
+ endpoints: string[];
186
+ }
187
+ /**
188
+ * Active subscription
189
+ */
190
+ export interface Subscription {
191
+ /**
192
+ * Subscription ID
193
+ */
194
+ id: string;
195
+ /**
196
+ * User address
197
+ */
198
+ user: string;
199
+ /**
200
+ * Plan
201
+ */
202
+ plan: SubscriptionPlan;
203
+ /**
204
+ * Current period start
205
+ */
206
+ periodStart: Date;
207
+ /**
208
+ * Current period end
209
+ */
210
+ periodEnd: Date;
211
+ /**
212
+ * Calls used in current period
213
+ */
214
+ callsUsed: number;
215
+ /**
216
+ * Status
217
+ */
218
+ status: 'active' | 'cancelled' | 'expired';
219
+ /**
220
+ * Next renewal date
221
+ */
222
+ nextRenewal: Date;
223
+ }
224
+ /**
225
+ * thirdweb x402 Payment Protocol Client
226
+ *
227
+ * Monetize your APIs with blockchain micropayments
228
+ */
229
+ export declare class x402Client {
230
+ private client;
231
+ private revenueSplit;
232
+ private defaultChain?;
233
+ private baseUrl;
234
+ constructor(config: x402Config);
235
+ /**
236
+ * Create a payment-required endpoint
237
+ */
238
+ createPaymentEndpoint(config: PaymentEndpointConfig): Promise<{
239
+ endpointId: string;
240
+ paymentUrl: string;
241
+ }>;
242
+ /**
243
+ * Track API usage
244
+ */
245
+ trackUsage(usage: Omit<UsageRecord, 'timestamp'>): Promise<void>;
246
+ /**
247
+ * Get payment stats for an endpoint
248
+ */
249
+ getPaymentStats(endpointUrl: string, period?: {
250
+ start: Date;
251
+ end: Date;
252
+ }): Promise<PaymentStats>;
253
+ /**
254
+ * Create a subscription plan
255
+ */
256
+ createSubscription(plan: Omit<SubscriptionPlan, 'id'>): Promise<SubscriptionPlan>;
257
+ /**
258
+ * Subscribe a user to a plan
259
+ */
260
+ subscribe(user: string, planId: string): Promise<Subscription>;
261
+ /**
262
+ * Get active subscriptions for a user
263
+ */
264
+ getSubscriptions(user: string): Promise<Subscription[]>;
265
+ /**
266
+ * Cancel a subscription
267
+ */
268
+ cancelSubscription(subscriptionId: string): Promise<void>;
269
+ /**
270
+ * Withdraw earned revenue
271
+ */
272
+ withdrawRevenue(recipient: string, amount: string, chain: Chain): Promise<{
273
+ txHash: string;
274
+ amount: string;
275
+ }>;
276
+ /**
277
+ * Get usage history for a user
278
+ */
279
+ getUsageHistory(user: string, options?: {
280
+ endpoint?: string;
281
+ startDate?: Date;
282
+ endDate?: Date;
283
+ limit?: number;
284
+ }): Promise<UsageRecord[]>;
285
+ /**
286
+ * Verify payment for a request
287
+ */
288
+ verifyPayment(txHash: string, expectedAmount: string): Promise<{
289
+ valid: boolean;
290
+ amount: string;
291
+ from: string;
292
+ }>;
293
+ /**
294
+ * Update revenue split configuration
295
+ */
296
+ updateRevenueSplit(endpointId: string, revenueSplit: {
297
+ recipient: string;
298
+ percentage: number;
299
+ }[]): Promise<void>;
300
+ /**
301
+ * Get total earnings for a recipient
302
+ */
303
+ getTotalEarnings(recipient: string, chain?: Chain): Promise<{
304
+ total: string;
305
+ byToken: {
306
+ token: string;
307
+ amount: string;
308
+ }[];
309
+ }>;
310
+ }
311
+ /**
312
+ * Create x402 client instance
313
+ */
314
+ export declare function createx402Client(config: x402Config): x402Client;
315
+ /**
316
+ * Middleware for Express/Fastify to enforce x402 payments
317
+ */
318
+ export declare function x402Middleware(client: x402Client, endpointConfig: PaymentEndpointConfig): (req: any, res: any, next: any) => Promise<void>;
319
+ //# sourceMappingURL=x402Client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402Client.d.ts","sourceRoot":"","sources":["../../src/thirdweb/x402Client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * thirdweb x402 Payment Protocol Client
3
+ *
4
+ * Monetize APIs with blockchain micropayments
5
+ * Implements HTTP 402 (Payment Required) with crypto payments
6
+ *
7
+ * Features:
8
+ * - Pay-per-call API monetization
9
+ * - Automatic revenue splitting (70/30 model)
10
+ * - Usage tracking and analytics
11
+ * - Subscription-based access
12
+ * - Metered billing
13
+ * - Multi-chain support
14
+ */
15
+ /**
16
+ * thirdweb x402 Payment Protocol Client
17
+ *
18
+ * Monetize your APIs with blockchain micropayments
19
+ */
20
+ export class x402Client {
21
+ constructor(config) {
22
+ this.baseUrl = 'https://x402.thirdweb.com/api';
23
+ this.client = config.client;
24
+ this.revenueSplit = config.revenueSplit || [
25
+ { recipient: '0x0', percentage: 70 }, // Creator gets 70%
26
+ { recipient: 'thirdweb', percentage: 30 }, // thirdweb gets 30%
27
+ ];
28
+ this.defaultChain = config.defaultChain;
29
+ }
30
+ /**
31
+ * Create a payment-required endpoint
32
+ */
33
+ async createPaymentEndpoint(config) {
34
+ console.warn('x402 API is placeholder - actual implementation pending');
35
+ // Generate unique endpoint ID
36
+ const endpointId = `x402_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
37
+ // Mock implementation
38
+ return {
39
+ endpointId,
40
+ paymentUrl: `${this.baseUrl}/pay/${endpointId}`,
41
+ };
42
+ }
43
+ /**
44
+ * Track API usage
45
+ */
46
+ async trackUsage(usage) {
47
+ console.warn('x402 API is placeholder - actual implementation pending');
48
+ // Mock usage tracking
49
+ console.log('Usage tracked:', {
50
+ ...usage,
51
+ timestamp: new Date(),
52
+ });
53
+ }
54
+ /**
55
+ * Get payment stats for an endpoint
56
+ */
57
+ async getPaymentStats(endpointUrl, period) {
58
+ console.warn('x402 API is placeholder - actual implementation pending');
59
+ // Mock stats
60
+ return {
61
+ url: endpointUrl,
62
+ totalCalls: 1000,
63
+ totalRevenue: '1000.0',
64
+ uniquePayers: 50,
65
+ averageRevenuePerCall: '1.0',
66
+ revenueByRecipient: this.revenueSplit.map(split => ({
67
+ recipient: split.recipient,
68
+ amount: ((1000 * split.percentage) / 100).toString(),
69
+ percentage: split.percentage,
70
+ })),
71
+ period: period || {
72
+ start: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000),
73
+ end: new Date(),
74
+ },
75
+ };
76
+ }
77
+ /**
78
+ * Create a subscription plan
79
+ */
80
+ async createSubscription(plan) {
81
+ console.warn('x402 API is placeholder - actual implementation pending');
82
+ return {
83
+ id: `plan_${Date.now()}`,
84
+ ...plan,
85
+ };
86
+ }
87
+ /**
88
+ * Subscribe a user to a plan
89
+ */
90
+ async subscribe(user, planId) {
91
+ console.warn('x402 API is placeholder - actual implementation pending');
92
+ const now = new Date();
93
+ const periodEnd = new Date(now.getTime() + 30 * 24 * 60 * 60 * 1000);
94
+ return {
95
+ id: `sub_${Date.now()}`,
96
+ user,
97
+ plan: {
98
+ id: planId,
99
+ name: 'Basic Plan',
100
+ price: '10.0',
101
+ paymentToken: '0x0',
102
+ periodDays: 30,
103
+ includedCalls: 1000,
104
+ endpoints: [],
105
+ },
106
+ periodStart: now,
107
+ periodEnd,
108
+ callsUsed: 0,
109
+ status: 'active',
110
+ nextRenewal: periodEnd,
111
+ };
112
+ }
113
+ /**
114
+ * Get active subscriptions for a user
115
+ */
116
+ async getSubscriptions(user) {
117
+ console.warn('x402 API is placeholder - actual implementation pending');
118
+ return [];
119
+ }
120
+ /**
121
+ * Cancel a subscription
122
+ */
123
+ async cancelSubscription(subscriptionId) {
124
+ console.warn('x402 API is placeholder - actual implementation pending');
125
+ console.log(`Subscription ${subscriptionId} cancelled`);
126
+ }
127
+ /**
128
+ * Withdraw earned revenue
129
+ */
130
+ async withdrawRevenue(recipient, amount, chain) {
131
+ console.warn('x402 API is placeholder - actual implementation pending');
132
+ return {
133
+ txHash: `0x${Math.random().toString(16).substr(2)}`,
134
+ amount,
135
+ };
136
+ }
137
+ /**
138
+ * Get usage history for a user
139
+ */
140
+ async getUsageHistory(user, options) {
141
+ console.warn('x402 API is placeholder - actual implementation pending');
142
+ return [];
143
+ }
144
+ /**
145
+ * Verify payment for a request
146
+ */
147
+ async verifyPayment(txHash, expectedAmount) {
148
+ console.warn('x402 API is placeholder - actual implementation pending');
149
+ return {
150
+ valid: true,
151
+ amount: expectedAmount,
152
+ from: '0x0',
153
+ };
154
+ }
155
+ /**
156
+ * Update revenue split configuration
157
+ */
158
+ async updateRevenueSplit(endpointId, revenueSplit) {
159
+ // Validate splits add up to 100%
160
+ const total = revenueSplit.reduce((sum, split) => sum + split.percentage, 0);
161
+ if (total !== 100) {
162
+ throw new Error('Revenue split percentages must add up to 100%');
163
+ }
164
+ console.warn('x402 API is placeholder - actual implementation pending');
165
+ }
166
+ /**
167
+ * Get total earnings for a recipient
168
+ */
169
+ async getTotalEarnings(recipient, chain) {
170
+ console.warn('x402 API is placeholder - actual implementation pending');
171
+ return {
172
+ total: '0',
173
+ byToken: [],
174
+ };
175
+ }
176
+ }
177
+ /**
178
+ * Create x402 client instance
179
+ */
180
+ export function createx402Client(config) {
181
+ return new x402Client(config);
182
+ }
183
+ /**
184
+ * Middleware for Express/Fastify to enforce x402 payments
185
+ */
186
+ export function x402Middleware(client, endpointConfig) {
187
+ return async (req, res, next) => {
188
+ // Check for payment proof in headers
189
+ const paymentProof = req.headers['x-payment-proof'];
190
+ if (!paymentProof) {
191
+ res.status(402).json({
192
+ error: 'Payment Required',
193
+ message: 'This API requires payment',
194
+ price: endpointConfig.pricePerCall,
195
+ paymentToken: endpointConfig.paymentToken,
196
+ chain: endpointConfig.chain.id,
197
+ });
198
+ return;
199
+ }
200
+ try {
201
+ // Verify payment
202
+ const payment = await client.verifyPayment(paymentProof, endpointConfig.pricePerCall);
203
+ if (!payment.valid) {
204
+ throw new Error('Invalid payment');
205
+ }
206
+ // Track usage
207
+ await client.trackUsage({
208
+ user: payment.from,
209
+ endpoint: endpointConfig.url,
210
+ cost: payment.amount,
211
+ txHash: paymentProof,
212
+ });
213
+ // Allow request to proceed
214
+ next();
215
+ }
216
+ catch (error) {
217
+ res.status(402).json({
218
+ error: 'Payment Verification Failed',
219
+ message: error.message,
220
+ });
221
+ }
222
+ };
223
+ }
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Gas Usage Tracker
3
+ *
4
+ * Tracks gas usage for per-app billing in Varity SDK.
5
+ * Each app's gas consumption is monitored and sent to backend for billing.
6
+ *
7
+ * @module tracking/gasTracker
8
+ */
9
+ import type { ThirdwebClient, Chain } from 'thirdweb';
10
+ /**
11
+ * Gas usage event sent to backend for billing
12
+ */
13
+ export interface GasUsageEvent {
14
+ /** Unique app identifier from App Store */
15
+ appId: string;
16
+ /** Developer's wallet address for billing */
17
+ developerWallet: string;
18
+ /** Transaction hash on-chain */
19
+ transactionHash: string;
20
+ /** Gas cost in USDC (6 decimal precision) */
21
+ gasSponsored: string;
22
+ /** Unix timestamp (milliseconds) */
23
+ timestamp: number;
24
+ /** Chain ID (33529 for Varity L3) */
25
+ chainId: number;
26
+ /** End user's wallet who triggered the transaction */
27
+ userWallet: string;
28
+ }
29
+ /**
30
+ * Transaction receipt with gas information
31
+ */
32
+ export interface GasTransactionReceipt {
33
+ /** Transaction hash */
34
+ transactionHash: string;
35
+ /** Gas used by the transaction */
36
+ gasUsed: bigint;
37
+ /** Effective gas price paid */
38
+ effectiveGasPrice: bigint;
39
+ /** Block number */
40
+ blockNumber: bigint;
41
+ /** Status (1 = success, 0 = failure) */
42
+ status: number;
43
+ }
44
+ /**
45
+ * Gas tracking configuration
46
+ */
47
+ export interface GasTrackerConfig {
48
+ /** API endpoint for gas tracking (default: https://api.varity.so) */
49
+ apiUrl?: string;
50
+ /** Enable/disable tracking (for development) */
51
+ enabled?: boolean;
52
+ /** Retry attempts on failure */
53
+ retries?: number;
54
+ /** Timeout for tracking requests (ms) */
55
+ timeout?: number;
56
+ }
57
+ /**
58
+ * Wait for transaction receipt with retry logic
59
+ *
60
+ * @param client - thirdweb client
61
+ * @param chain - Chain to query
62
+ * @param transactionHash - Transaction hash to wait for
63
+ * @param maxWaitTime - Maximum time to wait in ms (default: 60s)
64
+ * @returns Transaction receipt
65
+ */
66
+ export declare function waitForTransactionReceipt(client: ThirdwebClient, chain: Chain, transactionHash: string, maxWaitTime?: number): Promise<GasTransactionReceipt>;
67
+ /**
68
+ * Calculate gas cost in USDC (6 decimals)
69
+ *
70
+ * @param receipt - Transaction receipt with gas information
71
+ * @param usdcPerGas - USDC price per gas unit (default: auto-fetch from oracle)
72
+ * @returns Gas cost in USDC as string (6 decimal precision)
73
+ *
74
+ * @example
75
+ * const receipt = await waitForTransactionReceipt(client, chain, txHash);
76
+ * const usdcCost = await calculateGasInUSDC(receipt);
77
+ * console.log(`Gas cost: ${usdcCost} USDC`); // "0.025000"
78
+ */
79
+ export declare function calculateGasInUSDC(receipt: GasTransactionReceipt, usdcPerGas?: string): Promise<string>;
80
+ /**
81
+ * Track gas usage for billing
82
+ *
83
+ * Sends gas usage event to Varity backend API for billing purposes.
84
+ * Includes retry logic and error handling.
85
+ *
86
+ * @param event - Gas usage event to track
87
+ * @param config - Optional configuration
88
+ * @returns Promise that resolves when tracking is complete
89
+ *
90
+ * @example
91
+ * await trackGasUsage({
92
+ * appId: 'app_abc123',
93
+ * developerWallet: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
94
+ * transactionHash: '0x...',
95
+ * gasSponsored: '0.025000',
96
+ * timestamp: Date.now(),
97
+ * chainId: 33529,
98
+ * userWallet: '0x...',
99
+ * });
100
+ */
101
+ export declare function trackGasUsage(event: GasUsageEvent, config?: GasTrackerConfig): Promise<void>;
102
+ /**
103
+ * Track gas usage for a transaction (convenience method)
104
+ *
105
+ * Waits for transaction receipt, calculates gas cost, and tracks usage.
106
+ *
107
+ * @param client - thirdweb client
108
+ * @param chain - Chain the transaction is on
109
+ * @param transactionHash - Transaction hash to track
110
+ * @param appId - App identifier
111
+ * @param developerWallet - Developer's wallet address
112
+ * @param userWallet - End user's wallet address
113
+ * @param config - Optional configuration
114
+ *
115
+ * @example
116
+ * await trackTransactionGasUsage(
117
+ * client,
118
+ * varityL3Testnet,
119
+ * txHash,
120
+ * 'app_abc123',
121
+ * '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
122
+ * '0x...'
123
+ * );
124
+ */
125
+ export declare function trackTransactionGasUsage(client: ThirdwebClient, chain: Chain, transactionHash: string, appId: string, developerWallet: string, userWallet: string, config?: GasTrackerConfig): Promise<void>;
126
+ /**
127
+ * Create a gas tracker instance with default config
128
+ *
129
+ * @param config - Gas tracker configuration
130
+ * @returns Object with tracking methods
131
+ *
132
+ * @example
133
+ * const tracker = createGasTracker({
134
+ * apiUrl: 'https://api.varity.so',
135
+ * enabled: true,
136
+ * });
137
+ *
138
+ * await tracker.trackTransaction(client, chain, txHash, appId, devWallet, userWallet);
139
+ */
140
+ export declare function createGasTracker(config?: GasTrackerConfig): {
141
+ /**
142
+ * Track gas usage event
143
+ */
144
+ trackEvent: (event: GasUsageEvent) => Promise<void>;
145
+ /**
146
+ * Track transaction gas usage
147
+ */
148
+ trackTransaction: (client: ThirdwebClient, chain: Chain, transactionHash: string, appId: string, developerWallet: string, userWallet: string) => Promise<void>;
149
+ /**
150
+ * Calculate gas in USDC
151
+ */
152
+ calculateGas: typeof calculateGasInUSDC;
153
+ /**
154
+ * Wait for receipt
155
+ */
156
+ waitForReceipt: (client: ThirdwebClient, chain: Chain, txHash: string) => Promise<GasTransactionReceipt>;
157
+ };
158
+ //# sourceMappingURL=gasTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gasTracker.d.ts","sourceRoot":"","sources":["../../src/tracking/gasTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IAEd,6CAA6C;IAC7C,eAAe,EAAE,MAAM,CAAC;IAExB,gCAAgC;IAChC,eAAe,EAAE,MAAM,CAAC;IAExB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IAErB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAEhB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;IAExB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAEhB,+BAA+B;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAE1B,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,MAAM,EACvB,WAAW,GAAE,MAAc,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAgChC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,qBAAqB,EAC9B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,aAAa,EACpB,MAAM,GAAE,gBAAqB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,gBAAqB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,gBAAqB;IAI1D;;OAEG;wBACiB,aAAa;IAEjC;;OAEG;+BAEO,cAAc,SACf,KAAK,mBACK,MAAM,SAChB,MAAM,mBACI,MAAM,cACX,MAAM;IAWpB;;OAEG;;IAGH;;OAEG;6BACsB,cAAc,SAAS,KAAK,UAAU,MAAM;EAGxE"}