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.
- package/LICENSE +201 -0
- package/README.md +107 -0
- package/dist/agent-payments.d.ts +47 -0
- package/dist/agent-payments.d.ts.map +1 -0
- package/dist/agent-payments.js +76 -0
- package/dist/agent-payments.js.map +1 -0
- package/dist/agent.d.ts +177 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +300 -0
- package/dist/agent.js.map +1 -0
- package/dist/ap2.d.ts +54 -0
- package/dist/ap2.d.ts.map +1 -0
- package/dist/ap2.js +88 -0
- package/dist/ap2.js.map +1 -0
- package/dist/app.d.ts +186 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +317 -0
- package/dist/app.js.map +1 -0
- package/dist/bridge.d.ts +64 -0
- package/dist/bridge.d.ts.map +1 -0
- package/dist/bridge.js +93 -0
- package/dist/bridge.js.map +1 -0
- package/dist/canton.d.ts +36 -0
- package/dist/canton.d.ts.map +1 -0
- package/dist/canton.js +46 -0
- package/dist/canton.js.map +1 -0
- package/dist/circuit-breaker.d.ts +35 -0
- package/dist/circuit-breaker.d.ts.map +1 -0
- package/dist/circuit-breaker.js +53 -0
- package/dist/circuit-breaker.js.map +1 -0
- package/dist/client.d.ts +134 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +265 -0
- package/dist/client.js.map +1 -0
- package/dist/compliance.d.ts +83 -0
- package/dist/compliance.d.ts.map +1 -0
- package/dist/compliance.js +74 -0
- package/dist/compliance.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +24 -0
- package/dist/config.js.map +1 -0
- package/dist/contract.d.ts +68 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +59 -0
- package/dist/contract.js.map +1 -0
- package/dist/crypto.d.ts +112 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +97 -0
- package/dist/crypto.js.map +1 -0
- package/dist/custody.d.ts +114 -0
- package/dist/custody.d.ts.map +1 -0
- package/dist/custody.js +96 -0
- package/dist/custody.js.map +1 -0
- package/dist/debridge.d.ts +129 -0
- package/dist/debridge.d.ts.map +1 -0
- package/dist/debridge.js +93 -0
- package/dist/debridge.js.map +1 -0
- package/dist/erc7802.d.ts +36 -0
- package/dist/erc7802.d.ts.map +1 -0
- package/dist/erc7802.js +52 -0
- package/dist/erc7802.js.map +1 -0
- package/dist/events.d.ts +112 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +70 -0
- package/dist/events.js.map +1 -0
- package/dist/governance.d.ts +55 -0
- package/dist/governance.d.ts.map +1 -0
- package/dist/governance.js +77 -0
- package/dist/governance.js.map +1 -0
- package/dist/identity.d.ts +102 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +147 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/inference.d.ts +27 -0
- package/dist/inference.d.ts.map +1 -0
- package/dist/inference.js +43 -0
- package/dist/inference.js.map +1 -0
- package/dist/marketplace.d.ts +44 -0
- package/dist/marketplace.d.ts.map +1 -0
- package/dist/marketplace.js +74 -0
- package/dist/marketplace.js.map +1 -0
- package/dist/nanopayment.d.ts +53 -0
- package/dist/nanopayment.d.ts.map +1 -0
- package/dist/nanopayment.js +81 -0
- package/dist/nanopayment.js.map +1 -0
- package/dist/nft.d.ts +127 -0
- package/dist/nft.d.ts.map +1 -0
- package/dist/nft.js +99 -0
- package/dist/nft.js.map +1 -0
- package/dist/payment.d.ts +71 -0
- package/dist/payment.d.ts.map +1 -0
- package/dist/payment.js +105 -0
- package/dist/payment.js.map +1 -0
- package/dist/provider.d.ts +351 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +368 -0
- package/dist/provider.js.map +1 -0
- package/dist/rpc.d.ts +35 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +127 -0
- package/dist/rpc.js.map +1 -0
- package/dist/settlement.d.ts +52 -0
- package/dist/settlement.d.ts.map +1 -0
- package/dist/settlement.js +86 -0
- package/dist/settlement.js.map +1 -0
- package/dist/skill.d.ts +55 -0
- package/dist/skill.d.ts.map +1 -0
- package/dist/skill.js +79 -0
- package/dist/skill.js.map +1 -0
- package/dist/staking.d.ts +42 -0
- package/dist/staking.d.ts.map +1 -0
- package/dist/staking.js +62 -0
- package/dist/staking.js.map +1 -0
- package/dist/streaming.d.ts +83 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +193 -0
- package/dist/streaming.js.map +1 -0
- package/dist/task.d.ts +46 -0
- package/dist/task.d.ts.map +1 -0
- package/dist/task.js +76 -0
- package/dist/task.js.map +1 -0
- package/dist/tee.d.ts +88 -0
- package/dist/tee.d.ts.map +1 -0
- package/dist/tee.js +62 -0
- package/dist/tee.js.map +1 -0
- package/dist/token.d.ts +165 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +80 -0
- package/dist/token.js.map +1 -0
- package/dist/tool.d.ts +55 -0
- package/dist/tool.d.ts.map +1 -0
- package/dist/tool.js +79 -0
- package/dist/tool.js.map +1 -0
- package/dist/types.d.ts +1318 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +117 -0
- package/dist/types.js.map +1 -0
- package/dist/wallet.d.ts +44 -0
- package/dist/wallet.d.ts.map +1 -0
- package/dist/wallet.js +75 -0
- package/dist/wallet.js.map +1 -0
- package/dist/zk.d.ts +66 -0
- package/dist/zk.d.ts.map +1 -0
- package/dist/zk.js +58 -0
- package/dist/zk.js.map +1 -0
- package/package.json +41 -0
package/dist/provider.js
ADDED
|
@@ -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
|
package/dist/rpc.js.map
ADDED
|
@@ -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"}
|