tenzro-sdk 0.1.0

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 (151) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +107 -0
  3. package/dist/agent-payments.d.ts +47 -0
  4. package/dist/agent-payments.d.ts.map +1 -0
  5. package/dist/agent-payments.js +76 -0
  6. package/dist/agent-payments.js.map +1 -0
  7. package/dist/agent.d.ts +177 -0
  8. package/dist/agent.d.ts.map +1 -0
  9. package/dist/agent.js +300 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/ap2.d.ts +54 -0
  12. package/dist/ap2.d.ts.map +1 -0
  13. package/dist/ap2.js +88 -0
  14. package/dist/ap2.js.map +1 -0
  15. package/dist/app.d.ts +186 -0
  16. package/dist/app.d.ts.map +1 -0
  17. package/dist/app.js +317 -0
  18. package/dist/app.js.map +1 -0
  19. package/dist/bridge.d.ts +64 -0
  20. package/dist/bridge.d.ts.map +1 -0
  21. package/dist/bridge.js +93 -0
  22. package/dist/bridge.js.map +1 -0
  23. package/dist/canton.d.ts +36 -0
  24. package/dist/canton.d.ts.map +1 -0
  25. package/dist/canton.js +46 -0
  26. package/dist/canton.js.map +1 -0
  27. package/dist/circuit-breaker.d.ts +35 -0
  28. package/dist/circuit-breaker.d.ts.map +1 -0
  29. package/dist/circuit-breaker.js +53 -0
  30. package/dist/circuit-breaker.js.map +1 -0
  31. package/dist/client.d.ts +134 -0
  32. package/dist/client.d.ts.map +1 -0
  33. package/dist/client.js +265 -0
  34. package/dist/client.js.map +1 -0
  35. package/dist/compliance.d.ts +83 -0
  36. package/dist/compliance.d.ts.map +1 -0
  37. package/dist/compliance.js +74 -0
  38. package/dist/compliance.js.map +1 -0
  39. package/dist/config.d.ts +10 -0
  40. package/dist/config.d.ts.map +1 -0
  41. package/dist/config.js +24 -0
  42. package/dist/config.js.map +1 -0
  43. package/dist/contract.d.ts +68 -0
  44. package/dist/contract.d.ts.map +1 -0
  45. package/dist/contract.js +59 -0
  46. package/dist/contract.js.map +1 -0
  47. package/dist/crypto.d.ts +112 -0
  48. package/dist/crypto.d.ts.map +1 -0
  49. package/dist/crypto.js +97 -0
  50. package/dist/crypto.js.map +1 -0
  51. package/dist/custody.d.ts +114 -0
  52. package/dist/custody.d.ts.map +1 -0
  53. package/dist/custody.js +96 -0
  54. package/dist/custody.js.map +1 -0
  55. package/dist/debridge.d.ts +129 -0
  56. package/dist/debridge.d.ts.map +1 -0
  57. package/dist/debridge.js +93 -0
  58. package/dist/debridge.js.map +1 -0
  59. package/dist/erc7802.d.ts +36 -0
  60. package/dist/erc7802.d.ts.map +1 -0
  61. package/dist/erc7802.js +52 -0
  62. package/dist/erc7802.js.map +1 -0
  63. package/dist/events.d.ts +112 -0
  64. package/dist/events.d.ts.map +1 -0
  65. package/dist/events.js +70 -0
  66. package/dist/events.js.map +1 -0
  67. package/dist/governance.d.ts +55 -0
  68. package/dist/governance.d.ts.map +1 -0
  69. package/dist/governance.js +77 -0
  70. package/dist/governance.js.map +1 -0
  71. package/dist/identity.d.ts +102 -0
  72. package/dist/identity.d.ts.map +1 -0
  73. package/dist/identity.js +147 -0
  74. package/dist/identity.js.map +1 -0
  75. package/dist/index.d.ts +67 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +85 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/inference.d.ts +27 -0
  80. package/dist/inference.d.ts.map +1 -0
  81. package/dist/inference.js +43 -0
  82. package/dist/inference.js.map +1 -0
  83. package/dist/marketplace.d.ts +44 -0
  84. package/dist/marketplace.d.ts.map +1 -0
  85. package/dist/marketplace.js +74 -0
  86. package/dist/marketplace.js.map +1 -0
  87. package/dist/nanopayment.d.ts +53 -0
  88. package/dist/nanopayment.d.ts.map +1 -0
  89. package/dist/nanopayment.js +81 -0
  90. package/dist/nanopayment.js.map +1 -0
  91. package/dist/nft.d.ts +127 -0
  92. package/dist/nft.d.ts.map +1 -0
  93. package/dist/nft.js +99 -0
  94. package/dist/nft.js.map +1 -0
  95. package/dist/payment.d.ts +71 -0
  96. package/dist/payment.d.ts.map +1 -0
  97. package/dist/payment.js +105 -0
  98. package/dist/payment.js.map +1 -0
  99. package/dist/provider.d.ts +351 -0
  100. package/dist/provider.d.ts.map +1 -0
  101. package/dist/provider.js +368 -0
  102. package/dist/provider.js.map +1 -0
  103. package/dist/rpc.d.ts +35 -0
  104. package/dist/rpc.d.ts.map +1 -0
  105. package/dist/rpc.js +127 -0
  106. package/dist/rpc.js.map +1 -0
  107. package/dist/settlement.d.ts +52 -0
  108. package/dist/settlement.d.ts.map +1 -0
  109. package/dist/settlement.js +86 -0
  110. package/dist/settlement.js.map +1 -0
  111. package/dist/skill.d.ts +55 -0
  112. package/dist/skill.d.ts.map +1 -0
  113. package/dist/skill.js +79 -0
  114. package/dist/skill.js.map +1 -0
  115. package/dist/staking.d.ts +42 -0
  116. package/dist/staking.d.ts.map +1 -0
  117. package/dist/staking.js +62 -0
  118. package/dist/staking.js.map +1 -0
  119. package/dist/streaming.d.ts +83 -0
  120. package/dist/streaming.d.ts.map +1 -0
  121. package/dist/streaming.js +193 -0
  122. package/dist/streaming.js.map +1 -0
  123. package/dist/task.d.ts +46 -0
  124. package/dist/task.d.ts.map +1 -0
  125. package/dist/task.js +76 -0
  126. package/dist/task.js.map +1 -0
  127. package/dist/tee.d.ts +88 -0
  128. package/dist/tee.d.ts.map +1 -0
  129. package/dist/tee.js +62 -0
  130. package/dist/tee.js.map +1 -0
  131. package/dist/token.d.ts +165 -0
  132. package/dist/token.d.ts.map +1 -0
  133. package/dist/token.js +80 -0
  134. package/dist/token.js.map +1 -0
  135. package/dist/tool.d.ts +55 -0
  136. package/dist/tool.d.ts.map +1 -0
  137. package/dist/tool.js +79 -0
  138. package/dist/tool.js.map +1 -0
  139. package/dist/types.d.ts +1318 -0
  140. package/dist/types.d.ts.map +1 -0
  141. package/dist/types.js +117 -0
  142. package/dist/types.js.map +1 -0
  143. package/dist/wallet.d.ts +44 -0
  144. package/dist/wallet.d.ts.map +1 -0
  145. package/dist/wallet.js +75 -0
  146. package/dist/wallet.js.map +1 -0
  147. package/dist/zk.d.ts +66 -0
  148. package/dist/zk.d.ts.map +1 -0
  149. package/dist/zk.js +58 -0
  150. package/dist/zk.js.map +1 -0
  151. package/package.json +41 -0
@@ -0,0 +1,368 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviderClient = void 0;
4
+ /**
5
+ * Client for provider operations including network participation,
6
+ * model serving, and hardware management.
7
+ */
8
+ class ProviderClient {
9
+ rpc;
10
+ constructor(rpc) {
11
+ this.rpc = rpc;
12
+ }
13
+ /**
14
+ * One-click network participation — provisions identity, wallet, and hardware profile
15
+ *
16
+ * @param password - Password to encrypt the wallet
17
+ * @returns Participation response with DID, address, and hardware profile
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const result = await client.provider.participate("my-secure-password");
22
+ * console.log("DID:", result.did);
23
+ * console.log("Address:", result.address);
24
+ * ```
25
+ */
26
+ async participate(password) {
27
+ return await this.rpc.call("tenzro_participate", [password]);
28
+ }
29
+ /**
30
+ * Download a model from the registry
31
+ *
32
+ * @param modelId - ID of the model to download
33
+ * @returns Task ID for tracking download progress
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const taskId = await client.provider.downloadModel("gemma4-9b");
38
+ * console.log("Download started:", taskId);
39
+ * ```
40
+ */
41
+ async downloadModel(modelId) {
42
+ return await this.rpc.call("tenzro_downloadModel", [modelId]);
43
+ }
44
+ /**
45
+ * Get download progress for a model
46
+ *
47
+ * @param modelId - ID of the model being downloaded
48
+ * @returns Download progress information
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * const progress = await client.provider.getDownloadProgress("gemma4-9b");
53
+ * console.log(`Progress: ${(progress.progress * 100).toFixed(1)}%`);
54
+ * ```
55
+ */
56
+ async getDownloadProgress(modelId) {
57
+ return await this.rpc.call("tenzro_getDownloadProgress", [modelId]);
58
+ }
59
+ /**
60
+ * Start serving a model on the network
61
+ *
62
+ * @param modelId - ID of the model to serve
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * await client.provider.serveModel("gemma4-9b");
67
+ * console.log("Now serving model");
68
+ * ```
69
+ */
70
+ async serveModel(modelId) {
71
+ await this.rpc.call("tenzro_serveModel", [modelId]);
72
+ }
73
+ /**
74
+ * Stop serving a model
75
+ *
76
+ * @param modelId - ID of the model to stop serving
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * await client.provider.stopModel("gemma4-9b");
81
+ * console.log("Stopped serving model");
82
+ * ```
83
+ */
84
+ async stopModel(modelId) {
85
+ await this.rpc.call("tenzro_stopModel", [modelId]);
86
+ }
87
+ /**
88
+ * Delete a downloaded model
89
+ *
90
+ * @param modelId - ID of the model to delete
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * await client.provider.deleteModel("gemma4-9b");
95
+ * console.log("Model deleted");
96
+ * ```
97
+ */
98
+ async deleteModel(modelId) {
99
+ await this.rpc.call("tenzro_deleteModel", [modelId]);
100
+ }
101
+ /**
102
+ * Chat with a loaded model
103
+ *
104
+ * @param modelId - ID of the model to use
105
+ * @param messages - Array of chat messages
106
+ * @returns Chat completion response
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * const messages = [
111
+ * { role: "user", content: "What is Tenzro Network?" }
112
+ * ];
113
+ * const response = await client.provider.chat("gemma4-9b", messages);
114
+ * console.log("Response:", response.response);
115
+ * ```
116
+ */
117
+ async chat(modelId, messages) {
118
+ return await this.rpc.call("tenzro_chat", [modelId, messages]);
119
+ }
120
+ /**
121
+ * Get hardware profile of the node
122
+ *
123
+ * @returns Hardware profile with CPU, memory, GPU, and TEE support
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * const profile = await client.provider.getHardwareProfile();
128
+ * console.log("CPU:", profile.cpu);
129
+ * console.log("Memory:", profile.memory_gb, "GB");
130
+ * ```
131
+ */
132
+ async getHardwareProfile() {
133
+ return await this.rpc.call("tenzro_getHardwareProfile", []);
134
+ }
135
+ /**
136
+ * Set node role (validator, provider, light_client)
137
+ *
138
+ * @param role - Node role to set
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * await client.provider.setRole("provider");
143
+ * console.log("Role updated");
144
+ * ```
145
+ */
146
+ async setRole(role) {
147
+ await this.rpc.call("tenzro_setRole", [role]);
148
+ }
149
+ /**
150
+ * Register as a provider on the network
151
+ *
152
+ * Model/inference providers do not need to stake TNZO — staking is only
153
+ * required for validators. The `stakeAmount` parameter defaults to 0.
154
+ *
155
+ * @param models - List of model IDs to serve
156
+ * @param stakeAmount - Amount of TNZO to stake (default: 0, not required for model providers)
157
+ * @returns Transaction hash of the registration
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * // Register as a model provider — no staking required
162
+ * const models = ["gemma3-270m"];
163
+ * const txHash = await client.provider.register(models);
164
+ * console.log("Registration tx:", txHash);
165
+ * ```
166
+ */
167
+ async register(models, stakeAmount = 0) {
168
+ return await this.rpc.call("tenzro_registerProvider", [models, stakeAmount]);
169
+ }
170
+ /**
171
+ * Get provider statistics
172
+ *
173
+ * @returns Provider statistics with serving state and inference count
174
+ *
175
+ * @example
176
+ * ```typescript
177
+ * const stats = await client.provider.stats();
178
+ * console.log("Serving:", stats.is_serving);
179
+ * console.log("Total inferences:", stats.total_inferences);
180
+ * ```
181
+ */
182
+ async stats() {
183
+ return await this.rpc.call("tenzro_providerStats", []);
184
+ }
185
+ /**
186
+ * List all model service endpoints with load information
187
+ *
188
+ * @returns Array of model endpoints with load data
189
+ *
190
+ * @example
191
+ * ```typescript
192
+ * const endpoints = await client.provider.listModelEndpoints();
193
+ * for (const ep of endpoints) {
194
+ * console.log(`${ep.model_name}: ${ep.status} (${ep.location})`);
195
+ * if (ep.load) {
196
+ * console.log(` Load: ${ep.load.active_requests}/${ep.load.max_concurrent} (${ep.load.utilization_percent}%)`);
197
+ * }
198
+ * }
199
+ * ```
200
+ */
201
+ async listModelEndpoints() {
202
+ return await this.rpc.call("tenzro_listModelEndpoints", []);
203
+ }
204
+ /**
205
+ * Get load information for a specific model
206
+ *
207
+ * @param modelId - ID of the model to check
208
+ * @returns Load info if the model is being served, undefined otherwise
209
+ *
210
+ * @example
211
+ * ```typescript
212
+ * const load = await client.provider.getModelLoad("gemma3-270m");
213
+ * if (load) {
214
+ * console.log(`Load: ${load.active_requests}/${load.max_concurrent} (${load.utilization_percent}%)`);
215
+ * }
216
+ * ```
217
+ */
218
+ async getModelLoad(modelId) {
219
+ const endpoints = await this.listModelEndpoints();
220
+ const ep = endpoints.find(e => e.model_id === modelId || e.model_name === modelId);
221
+ return ep?.load;
222
+ }
223
+ /**
224
+ * List all providers discovered on the Tenzro Network.
225
+ *
226
+ * Queries the `tenzro_listProviders` JSON-RPC method which merges:
227
+ * - The local node's own provider info (if it is serving models)
228
+ * - All remote providers discovered via the `tenzro/providers/1.0.0`
229
+ * gossipsub topic (announcements refreshed every 60 seconds)
230
+ *
231
+ * @param providerType - Optional filter by provider type (e.g. "llm", "tee", "general")
232
+ * @returns Array of discovered network providers
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * // List all providers
237
+ * const providers = await client.provider.listProviders();
238
+ * for (const p of providers) {
239
+ * console.log(`${p.peer_id}: ${p.provider_type} — models: ${p.served_models.join(", ")}`);
240
+ * }
241
+ *
242
+ * // List only LLM providers
243
+ * const llmProviders = await client.provider.listProviders("llm");
244
+ * ```
245
+ */
246
+ async listProviders(providerType) {
247
+ const params = providerType ? [{ provider_type: providerType }] : [];
248
+ return await this.rpc.call("tenzro_listProviders", params);
249
+ }
250
+ /**
251
+ * Join the network as a micro node.
252
+ * @param displayName - Optional display name for the node
253
+ * @param participantType - Optional participant type
254
+ * @returns Micro node registration response
255
+ */
256
+ async joinAsMicroNode(displayName, participantType) {
257
+ return await this.rpc.call("tenzro_joinAsMicroNode", [
258
+ {
259
+ display_name: displayName,
260
+ participant_type: participantType,
261
+ },
262
+ ]);
263
+ }
264
+ /**
265
+ * Set the provider availability schedule.
266
+ * @param schedule - Schedule configuration
267
+ * @returns Updated schedule
268
+ */
269
+ async setProviderSchedule(schedule) {
270
+ return await this.rpc.call("tenzro_setProviderSchedule", [schedule]);
271
+ }
272
+ /**
273
+ * Get the current provider schedule.
274
+ * @returns Provider schedule configuration
275
+ */
276
+ async getProviderSchedule() {
277
+ return await this.rpc.call("tenzro_getProviderSchedule", []);
278
+ }
279
+ /**
280
+ * Set provider pricing configuration.
281
+ * @param pricing - Pricing configuration
282
+ * @returns Updated pricing
283
+ */
284
+ async setProviderPricing(pricing) {
285
+ return await this.rpc.call("tenzro_setProviderPricing", [pricing]);
286
+ }
287
+ /**
288
+ * Get the current provider pricing.
289
+ * @returns Provider pricing configuration
290
+ */
291
+ async getProviderPricing() {
292
+ return await this.rpc.call("tenzro_getProviderPricing", []);
293
+ }
294
+ /**
295
+ * Get a specific model endpoint.
296
+ * @param instanceId - The model endpoint instance ID
297
+ * @returns Model endpoint details
298
+ */
299
+ async getModelEndpoint(instanceId) {
300
+ return await this.rpc.call("tenzro_getModelEndpoint", [
301
+ { instance_id: instanceId },
302
+ ]);
303
+ }
304
+ /**
305
+ * Register a remote model endpoint.
306
+ * @param modelId - ID of the model
307
+ * @param apiEndpoint - API endpoint URL
308
+ * @param mcpEndpoint - Optional MCP endpoint URL
309
+ * @param modelName - Optional human-readable model name
310
+ * @param providerName - Optional provider name
311
+ * @returns Registration result
312
+ */
313
+ async registerModelEndpoint(modelId, apiEndpoint, mcpEndpoint, modelName, providerName) {
314
+ return await this.rpc.call("tenzro_registerModelEndpoint", [
315
+ {
316
+ model_id: modelId,
317
+ api_endpoint: apiEndpoint,
318
+ mcp_endpoint: mcpEndpoint,
319
+ model_name: modelName,
320
+ provider_name: providerName,
321
+ },
322
+ ]);
323
+ }
324
+ /**
325
+ * Unregister a model endpoint.
326
+ * @param instanceId - The model endpoint instance ID to remove
327
+ * @returns Unregistration result
328
+ */
329
+ async unregisterModelEndpoint(instanceId) {
330
+ return await this.rpc.call("tenzro_unregisterModelEndpoint", [
331
+ { instance_id: instanceId },
332
+ ]);
333
+ }
334
+ /**
335
+ * Add a resource to the node.
336
+ * @param resourceId - Resource identifier
337
+ * @param resourceType - Optional resource type
338
+ * @returns Resource registration result
339
+ */
340
+ async addResource(resourceId, resourceType) {
341
+ return await this.rpc.call("tenzro_addResource", [
342
+ { resource_id: resourceId, resource_type: resourceType },
343
+ ]);
344
+ }
345
+ /**
346
+ * Send a signed transaction.
347
+ * @param from - Sender address
348
+ * @param to - Recipient address
349
+ * @param amount - Amount to send
350
+ * @param asset - Optional asset identifier
351
+ * @returns Transaction hash
352
+ */
353
+ async sendTransaction(from, to, amount, asset) {
354
+ return await this.rpc.call("tenzro_sendTransaction", [
355
+ { from, to, amount, asset },
356
+ ]);
357
+ }
358
+ /**
359
+ * Submit a block to the network.
360
+ * @param block - Block data to submit
361
+ * @returns Submission result
362
+ */
363
+ async submitBlock(block) {
364
+ return await this.rpc.call("tenzro_submitBlock", [block]);
365
+ }
366
+ }
367
+ exports.ProviderClient = ProviderClient;
368
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
package/dist/rpc.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ export interface RpcRequest {
2
+ jsonrpc: "2.0";
3
+ method: string;
4
+ params: unknown[];
5
+ id: number;
6
+ }
7
+ export interface RpcResponse<T = unknown> {
8
+ jsonrpc: "2.0";
9
+ result?: T;
10
+ error?: RpcError;
11
+ id: number;
12
+ }
13
+ export interface RpcError {
14
+ code: number;
15
+ message: string;
16
+ data?: unknown;
17
+ }
18
+ export declare class RpcClient {
19
+ private endpoint;
20
+ private apiEndpoint;
21
+ private timeout;
22
+ private requestId;
23
+ constructor(endpoint: string, apiEndpoint?: string, timeout?: number);
24
+ call<T>(method: string, params?: unknown[]): Promise<T>;
25
+ get<T>(path: string): Promise<T>;
26
+ post<T>(path: string, body: unknown): Promise<T>;
27
+ getEndpoint(): string;
28
+ getApiEndpoint(): string;
29
+ }
30
+ export declare class RpcCallError extends Error {
31
+ code: number;
32
+ data?: unknown;
33
+ constructor(code: number, message: string, data?: unknown);
34
+ }
35
+ //# sourceMappingURL=rpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAa;gBAElB,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc;IAiBrE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAqC3D,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IA0BhC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BtD,WAAW,IAAI,MAAM;IAIrB,cAAc,IAAI,MAAM;CAGzB;AAED,qBAAa,YAAa,SAAQ,KAAK;IAClB,IAAI,EAAE,MAAM;IAA0B,IAAI,CAAC;gBAA3C,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAS,IAAI,CAAC,SAAS;CAIxE"}
package/dist/rpc.js ADDED
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RpcCallError = exports.RpcClient = void 0;
4
+ class RpcClient {
5
+ endpoint;
6
+ apiEndpoint;
7
+ timeout;
8
+ requestId = 0;
9
+ constructor(endpoint, apiEndpoint, timeout = 30000) {
10
+ this.endpoint = endpoint;
11
+ this.timeout = timeout;
12
+ // Derive API endpoint from RPC endpoint if not provided
13
+ if (apiEndpoint) {
14
+ this.apiEndpoint = apiEndpoint;
15
+ }
16
+ else if (endpoint.includes("rpc.tenzro.network")) {
17
+ this.apiEndpoint = endpoint.replace("rpc.tenzro.network", "api.tenzro.network");
18
+ }
19
+ else if (endpoint.includes("localhost:8545") || endpoint.includes("127.0.0.1:8545")) {
20
+ this.apiEndpoint = endpoint.replace("8545", "8080");
21
+ }
22
+ else {
23
+ // Default: assume API endpoint is the same as RPC endpoint
24
+ this.apiEndpoint = endpoint;
25
+ }
26
+ }
27
+ async call(method, params = []) {
28
+ // Use modular arithmetic to prevent overflow beyond Number.MAX_SAFE_INTEGER
29
+ this.requestId = (this.requestId + 1) % Number.MAX_SAFE_INTEGER;
30
+ const id = this.requestId;
31
+ const controller = new AbortController();
32
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
33
+ try {
34
+ const response = await fetch(this.endpoint, {
35
+ method: "POST",
36
+ headers: { "Content-Type": "application/json" },
37
+ body: JSON.stringify({ jsonrpc: "2.0", method, params, id }),
38
+ signal: controller.signal,
39
+ });
40
+ if (!response.ok) {
41
+ throw new Error(`RPC HTTP error: ${response.status} ${response.statusText}`);
42
+ }
43
+ const json = (await response.json());
44
+ if (json.error) {
45
+ throw new RpcCallError(json.error.code, json.error.message, json.error.data);
46
+ }
47
+ return json.result;
48
+ }
49
+ catch (error) {
50
+ if (error instanceof Error && error.name === "AbortError") {
51
+ throw new Error(`RPC request timed out after ${this.timeout}ms`);
52
+ }
53
+ throw error;
54
+ }
55
+ finally {
56
+ clearTimeout(timeoutId);
57
+ }
58
+ }
59
+ async get(path) {
60
+ const controller = new AbortController();
61
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
62
+ try {
63
+ const response = await fetch(`${this.apiEndpoint}${path}`, {
64
+ method: "GET",
65
+ headers: { Accept: "application/json" },
66
+ signal: controller.signal,
67
+ });
68
+ if (!response.ok) {
69
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
70
+ }
71
+ return (await response.json());
72
+ }
73
+ catch (error) {
74
+ if (error instanceof Error && error.name === "AbortError") {
75
+ throw new Error(`Request timed out after ${this.timeout}ms`);
76
+ }
77
+ throw error;
78
+ }
79
+ finally {
80
+ clearTimeout(timeoutId);
81
+ }
82
+ }
83
+ async post(path, body) {
84
+ const controller = new AbortController();
85
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
86
+ try {
87
+ const response = await fetch(`${this.apiEndpoint}${path}`, {
88
+ method: "POST",
89
+ headers: { "Content-Type": "application/json", Accept: "application/json" },
90
+ body: JSON.stringify(body),
91
+ signal: controller.signal,
92
+ });
93
+ if (!response.ok) {
94
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
95
+ }
96
+ return (await response.json());
97
+ }
98
+ catch (error) {
99
+ if (error instanceof Error && error.name === "AbortError") {
100
+ throw new Error(`Request timed out after ${this.timeout}ms`);
101
+ }
102
+ throw error;
103
+ }
104
+ finally {
105
+ clearTimeout(timeoutId);
106
+ }
107
+ }
108
+ getEndpoint() {
109
+ return this.endpoint;
110
+ }
111
+ getApiEndpoint() {
112
+ return this.apiEndpoint;
113
+ }
114
+ }
115
+ exports.RpcClient = RpcClient;
116
+ class RpcCallError extends Error {
117
+ code;
118
+ data;
119
+ constructor(code, message, data) {
120
+ super(`RPC Error ${code}: ${message}`);
121
+ this.code = code;
122
+ this.data = data;
123
+ this.name = "RpcCallError";
124
+ }
125
+ }
126
+ exports.RpcCallError = RpcCallError;
127
+ //# sourceMappingURL=rpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { RpcClient } from "./rpc";
2
+ import { SettlementParams, SettlementReceipt } from "./types";
3
+ /**
4
+ * Client for payment settlement operations.
5
+ * Supports immediate settlement, escrow, and micropayment channels.
6
+ */
7
+ export declare class SettlementClient {
8
+ private rpc;
9
+ constructor(rpc: RpcClient);
10
+ /**
11
+ * Settle a payment for AI inference or other services.
12
+ * @param request - Settlement request parameters
13
+ * @returns Settlement receipt with transaction details
14
+ */
15
+ settle(request: SettlementParams): Promise<SettlementReceipt>;
16
+ /**
17
+ * Get the status of a settlement by receipt ID.
18
+ * @param receiptId - The settlement receipt identifier
19
+ * @returns Settlement receipt or null if not found
20
+ */
21
+ getSettlement(receiptId: string): Promise<SettlementReceipt | null>;
22
+ /**
23
+ * Create an escrow that releases payment when conditions are met.
24
+ * @param payee - Address receiving the payment
25
+ * @param amount - Amount to escrow (in smallest unit)
26
+ * @param asset - Asset identifier (e.g., "TNZO")
27
+ * @param conditions - JSON-encoded release conditions
28
+ * @returns Escrow ID
29
+ */
30
+ createEscrow(payee: string, amount: bigint, asset: string, conditions: string): Promise<string>;
31
+ /**
32
+ * Release funds from an escrow.
33
+ * @param escrowId - The escrow identifier
34
+ * @param proof - Optional proof that conditions are met
35
+ * @returns Transaction hash
36
+ */
37
+ releaseEscrow(escrowId: string, proof?: string): Promise<string>;
38
+ /**
39
+ * Open a micropayment channel for streaming payments.
40
+ * @param payee - Address receiving payments
41
+ * @param deposit - Initial deposit amount
42
+ * @returns Channel ID
43
+ */
44
+ openPaymentChannel(payee: string, deposit: bigint): Promise<string>;
45
+ /**
46
+ * Close a micropayment channel.
47
+ * @param channelId - The channel identifier to close
48
+ * @returns Channel closure result
49
+ */
50
+ closePaymentChannel(channelId: string): Promise<any>;
51
+ }
52
+ //# sourceMappingURL=settlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.d.ts","sourceRoot":"","sources":["../src/settlement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE9D;;;GAGG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAElC;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInE;;;;OAIG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAMzE;;;;;;;OAOG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;IAWlB;;;;;OAKG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMtE;;;;;OAKG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASzE;;;;OAIG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAK3D"}