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,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettlementClient = void 0;
4
+ /**
5
+ * Client for payment settlement operations.
6
+ * Supports immediate settlement, escrow, and micropayment channels.
7
+ */
8
+ class SettlementClient {
9
+ rpc;
10
+ constructor(rpc) {
11
+ this.rpc = rpc;
12
+ }
13
+ /**
14
+ * Settle a payment for AI inference or other services.
15
+ * @param request - Settlement request parameters
16
+ * @returns Settlement receipt with transaction details
17
+ */
18
+ async settle(request) {
19
+ return this.rpc.call("tenzro_settle", [request]);
20
+ }
21
+ /**
22
+ * Get the status of a settlement by receipt ID.
23
+ * @param receiptId - The settlement receipt identifier
24
+ * @returns Settlement receipt or null if not found
25
+ */
26
+ async getSettlement(receiptId) {
27
+ return this.rpc.call("tenzro_getSettlement", [
28
+ receiptId,
29
+ ]);
30
+ }
31
+ /**
32
+ * Create an escrow that releases payment when conditions are met.
33
+ * @param payee - Address receiving the payment
34
+ * @param amount - Amount to escrow (in smallest unit)
35
+ * @param asset - Asset identifier (e.g., "TNZO")
36
+ * @param conditions - JSON-encoded release conditions
37
+ * @returns Escrow ID
38
+ */
39
+ async createEscrow(payee, amount, asset, conditions) {
40
+ return this.rpc.call("tenzro_createEscrow", [
41
+ {
42
+ payee,
43
+ amount: amount.toString(),
44
+ asset,
45
+ conditions,
46
+ },
47
+ ]);
48
+ }
49
+ /**
50
+ * Release funds from an escrow.
51
+ * @param escrowId - The escrow identifier
52
+ * @param proof - Optional proof that conditions are met
53
+ * @returns Transaction hash
54
+ */
55
+ async releaseEscrow(escrowId, proof) {
56
+ return this.rpc.call("tenzro_releaseEscrow", [
57
+ { escrow_id: escrowId, proof },
58
+ ]);
59
+ }
60
+ /**
61
+ * Open a micropayment channel for streaming payments.
62
+ * @param payee - Address receiving payments
63
+ * @param deposit - Initial deposit amount
64
+ * @returns Channel ID
65
+ */
66
+ async openPaymentChannel(payee, deposit) {
67
+ return this.rpc.call("tenzro_openPaymentChannel", [
68
+ {
69
+ payee,
70
+ deposit: deposit.toString(),
71
+ },
72
+ ]);
73
+ }
74
+ /**
75
+ * Close a micropayment channel.
76
+ * @param channelId - The channel identifier to close
77
+ * @returns Channel closure result
78
+ */
79
+ async closePaymentChannel(channelId) {
80
+ return this.rpc.call("tenzro_closePaymentChannel", [
81
+ { channel_id: channelId },
82
+ ]);
83
+ }
84
+ }
85
+ exports.SettlementClient = SettlementClient;
86
+ //# sourceMappingURL=settlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.js","sourceRoot":"","sources":["../src/settlement.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,gBAAgB;IACP;IAApB,YAAoB,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,OAAyB;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAoB,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAA2B,sBAAsB,EAAE;YACrE,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,MAAc,EACd,KAAa,EACb,UAAkB;QAElB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,qBAAqB,EAAE;YAClD;gBACE,KAAK;gBACL,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,KAAK;gBACL,UAAU;aACX;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,KAAc;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,sBAAsB,EAAE;YACnD,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,OAAe;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,2BAA2B,EAAE;YACxD;gBACE,KAAK;gBACL,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACjD,EAAE,UAAU,EAAE,SAAS,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;CACF;AApFD,4CAoFC"}
@@ -0,0 +1,55 @@
1
+ import type { RpcClient } from './rpc';
2
+ import type { SkillInfo, SkillFilter, RegisterSkillParams, UpdateSkillParams, SkillExecutionResult, SkillUsage } from './types';
3
+ /**
4
+ * Client for the Tenzro Skills Registry.
5
+ * Register, discover, and invoke reusable skills on the network.
6
+ */
7
+ export declare class SkillClient {
8
+ private readonly rpc;
9
+ constructor(rpc: RpcClient);
10
+ /**
11
+ * Register a new skill in the registry.
12
+ * @param params - Skill definition including name, description, version, and capabilities
13
+ * @returns The registered skill
14
+ */
15
+ registerSkill(params: RegisterSkillParams): Promise<SkillInfo>;
16
+ /**
17
+ * List skills with optional filtering.
18
+ * @param filter - Optional filter criteria (category, capability, tag, etc.)
19
+ * @returns Array of matching skills
20
+ */
21
+ listSkills(filter?: SkillFilter): Promise<SkillInfo[]>;
22
+ /**
23
+ * Search skills by free-text query.
24
+ * @param query - Search query string
25
+ * @returns Array of matching skills ranked by relevance
26
+ */
27
+ searchSkills(query: string): Promise<SkillInfo[]>;
28
+ /**
29
+ * Execute a skill with the given input.
30
+ * @param skillId - The skill to invoke
31
+ * @param input - Input payload (JSON-serializable string or object)
32
+ * @returns Execution result with output and duration
33
+ */
34
+ useSkill(skillId: string, input: string): Promise<SkillExecutionResult>;
35
+ /**
36
+ * Get a skill by ID.
37
+ * @param skillId - The skill identifier
38
+ * @returns Skill information
39
+ */
40
+ getSkill(skillId: string): Promise<SkillInfo>;
41
+ /**
42
+ * Update an existing skill (must be the creator).
43
+ * @param skillId - The skill to update
44
+ * @param params - Fields to update (partial)
45
+ * @returns Updated skill
46
+ */
47
+ updateSkill(skillId: string, params: UpdateSkillParams): Promise<SkillInfo>;
48
+ /**
49
+ * Get usage statistics for a skill.
50
+ * @param skillId - The skill identifier
51
+ * @returns Usage statistics including total invocations and last used timestamp
52
+ */
53
+ getSkillUsage(skillId: string): Promise<SkillUsage>;
54
+ }
55
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAE3C;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IAIpE;;;;OAIG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAI5D;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIvD;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAM7E;;;;OAIG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAInD;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAMjF;;;;OAIG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAK1D"}
package/dist/skill.js ADDED
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SkillClient = void 0;
4
+ /**
5
+ * Client for the Tenzro Skills Registry.
6
+ * Register, discover, and invoke reusable skills on the network.
7
+ */
8
+ class SkillClient {
9
+ rpc;
10
+ constructor(rpc) {
11
+ this.rpc = rpc;
12
+ }
13
+ /**
14
+ * Register a new skill in the registry.
15
+ * @param params - Skill definition including name, description, version, and capabilities
16
+ * @returns The registered skill
17
+ */
18
+ async registerSkill(params) {
19
+ return this.rpc.call('tenzro_registerSkill', [params]);
20
+ }
21
+ /**
22
+ * List skills with optional filtering.
23
+ * @param filter - Optional filter criteria (category, capability, tag, etc.)
24
+ * @returns Array of matching skills
25
+ */
26
+ async listSkills(filter) {
27
+ return this.rpc.call('tenzro_listSkills', [filter ?? {}]);
28
+ }
29
+ /**
30
+ * Search skills by free-text query.
31
+ * @param query - Search query string
32
+ * @returns Array of matching skills ranked by relevance
33
+ */
34
+ async searchSkills(query) {
35
+ return this.rpc.call('tenzro_searchSkills', [{ query }]);
36
+ }
37
+ /**
38
+ * Execute a skill with the given input.
39
+ * @param skillId - The skill to invoke
40
+ * @param input - Input payload (JSON-serializable string or object)
41
+ * @returns Execution result with output and duration
42
+ */
43
+ async useSkill(skillId, input) {
44
+ return this.rpc.call('tenzro_useSkill', [
45
+ { skill_id: skillId, input },
46
+ ]);
47
+ }
48
+ /**
49
+ * Get a skill by ID.
50
+ * @param skillId - The skill identifier
51
+ * @returns Skill information
52
+ */
53
+ async getSkill(skillId) {
54
+ return this.rpc.call('tenzro_getSkill', [{ skill_id: skillId }]);
55
+ }
56
+ /**
57
+ * Update an existing skill (must be the creator).
58
+ * @param skillId - The skill to update
59
+ * @param params - Fields to update (partial)
60
+ * @returns Updated skill
61
+ */
62
+ async updateSkill(skillId, params) {
63
+ return this.rpc.call('tenzro_updateSkill', [
64
+ { skill_id: skillId, ...params },
65
+ ]);
66
+ }
67
+ /**
68
+ * Get usage statistics for a skill.
69
+ * @param skillId - The skill identifier
70
+ * @returns Usage statistics including total invocations and last used timestamp
71
+ */
72
+ async getSkillUsage(skillId) {
73
+ return this.rpc.call('tenzro_getSkillUsage', [
74
+ { skill_id: skillId },
75
+ ]);
76
+ }
77
+ }
78
+ exports.SkillClient = SkillClient;
79
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":";;;AAUA;;;GAGG;AACH,MAAa,WAAW;IACO;IAA7B,YAA6B,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAE/C;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,MAA2B;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAY,sBAAsB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,MAAoB;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAc,mBAAmB,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAc,qBAAqB,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,KAAa;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAuB,iBAAiB,EAAE;YAC5D,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAY,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,MAAyB;QAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAY,oBAAoB,EAAE;YACpD,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE;SACjC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAa,sBAAsB,EAAE;YACvD,EAAE,QAAQ,EAAE,OAAO,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;CACF;AAzED,kCAyEC"}
@@ -0,0 +1,42 @@
1
+ import type { RpcClient } from './rpc';
2
+ import type { StakingRole, StakeResult, UnstakeResult, StakingBalance, StakingRewards, UnbondingEntry } from './types';
3
+ /**
4
+ * Client for TNZO token staking operations.
5
+ * Stake as a validator, model provider, or TEE provider.
6
+ */
7
+ export declare class StakingClient {
8
+ private readonly rpc;
9
+ constructor(rpc: RpcClient);
10
+ /**
11
+ * Stake TNZO tokens for a given role.
12
+ * @param amount - Amount of TNZO to stake (decimal string, e.g. "1000")
13
+ * @param role - Staking role: "validator", "model_provider", or "tee_provider"
14
+ * @returns Stake result with transaction hash and status
15
+ */
16
+ stake(amount: string, role: StakingRole): Promise<StakeResult>;
17
+ /**
18
+ * Unstake TNZO tokens (initiates the unbonding period).
19
+ * @param amount - Amount of TNZO to unstake (decimal string)
20
+ * @returns Unstake result with transaction hash, status, and unbonding end time
21
+ */
22
+ unstake(amount: string): Promise<UnstakeResult>;
23
+ /**
24
+ * Get the staking balance for an address.
25
+ * @param address - The address to query
26
+ * @returns Staking balance with staked and available amounts
27
+ */
28
+ getStakingBalance(address: string): Promise<StakingBalance>;
29
+ /**
30
+ * Get pending and claimed staking rewards for an address.
31
+ * @param address - The address to query
32
+ * @returns Rewards information
33
+ */
34
+ getRewards(address: string): Promise<StakingRewards>;
35
+ /**
36
+ * Get unbonding entries for an address.
37
+ * @param address - The address to query
38
+ * @returns Array of unbonding entries with completion times
39
+ */
40
+ getUnbonding(address: string): Promise<UnbondingEntry[]>;
41
+ }
42
+ //# sourceMappingURL=staking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staking.d.ts","sourceRoot":"","sources":["../src/staking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAE3C;;;;;OAKG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAIpE;;;;OAIG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIrD;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAMjE;;;;OAIG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAM1D;;;;OAIG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAK/D"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StakingClient = void 0;
4
+ /**
5
+ * Client for TNZO token staking operations.
6
+ * Stake as a validator, model provider, or TEE provider.
7
+ */
8
+ class StakingClient {
9
+ rpc;
10
+ constructor(rpc) {
11
+ this.rpc = rpc;
12
+ }
13
+ /**
14
+ * Stake TNZO tokens for a given role.
15
+ * @param amount - Amount of TNZO to stake (decimal string, e.g. "1000")
16
+ * @param role - Staking role: "validator", "model_provider", or "tee_provider"
17
+ * @returns Stake result with transaction hash and status
18
+ */
19
+ async stake(amount, role) {
20
+ return this.rpc.call('tenzro_stake', [{ amount, role }]);
21
+ }
22
+ /**
23
+ * Unstake TNZO tokens (initiates the unbonding period).
24
+ * @param amount - Amount of TNZO to unstake (decimal string)
25
+ * @returns Unstake result with transaction hash, status, and unbonding end time
26
+ */
27
+ async unstake(amount) {
28
+ return this.rpc.call('tenzro_unstake', [{ amount }]);
29
+ }
30
+ /**
31
+ * Get the staking balance for an address.
32
+ * @param address - The address to query
33
+ * @returns Staking balance with staked and available amounts
34
+ */
35
+ async getStakingBalance(address) {
36
+ return this.rpc.call('tenzro_getStakingBalance', [
37
+ { address },
38
+ ]);
39
+ }
40
+ /**
41
+ * Get pending and claimed staking rewards for an address.
42
+ * @param address - The address to query
43
+ * @returns Rewards information
44
+ */
45
+ async getRewards(address) {
46
+ return this.rpc.call('tenzro_getStakingRewards', [
47
+ { address },
48
+ ]);
49
+ }
50
+ /**
51
+ * Get unbonding entries for an address.
52
+ * @param address - The address to query
53
+ * @returns Array of unbonding entries with completion times
54
+ */
55
+ async getUnbonding(address) {
56
+ return this.rpc.call('tenzro_getUnbonding', [
57
+ { address },
58
+ ]);
59
+ }
60
+ }
61
+ exports.StakingClient = StakingClient;
62
+ //# sourceMappingURL=staking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staking.js","sourceRoot":"","sources":["../src/staking.ts"],"names":[],"mappings":";;;AAUA;;;GAGG;AACH,MAAa,aAAa;IACK;IAA7B,YAA6B,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAE/C;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,IAAiB;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAc,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAgB,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAiB,0BAA0B,EAAE;YAC/D,EAAE,OAAO,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAiB,0BAA0B,EAAE;YAC/D,EAAE,OAAO,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAmB,qBAAqB,EAAE;YAC5D,EAAE,OAAO,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;CACF;AAtDD,sCAsDC"}
@@ -0,0 +1,83 @@
1
+ import type { RpcClient } from './rpc';
2
+ /** Result from a streaming inference call. */
3
+ export interface StreamResult {
4
+ /** Total number of tokens generated */
5
+ total_tokens: number;
6
+ /** Complete generated output */
7
+ output: string;
8
+ }
9
+ /** Handle to an active event subscription. */
10
+ export interface SubscriptionHandle {
11
+ /** Subscription identifier */
12
+ id: string;
13
+ }
14
+ /** SSE connection handle. */
15
+ export interface SseConnection {
16
+ /** SSE endpoint URL */
17
+ url: string;
18
+ /** Abort controller for closing the connection */
19
+ abort: AbortController;
20
+ }
21
+ /** A real-time event from the node. */
22
+ export interface StreamEvent {
23
+ /** Event type (e.g., "block", "transaction", "settlement") */
24
+ type: string;
25
+ /** Event data */
26
+ data: unknown;
27
+ /** Event timestamp */
28
+ timestamp?: string;
29
+ }
30
+ /**
31
+ * Client for streaming and real-time operations.
32
+ *
33
+ * Provides streaming chat inference via SSE, event subscriptions,
34
+ * and SSE connections to A2A/MCP servers.
35
+ */
36
+ export declare class StreamingClient {
37
+ private readonly rpc;
38
+ private readonly endpoint;
39
+ private readonly apiEndpoint;
40
+ constructor(rpc: RpcClient);
41
+ /**
42
+ * Stream inference tokens using an async generator.
43
+ *
44
+ * @param modelId - Model identifier (e.g., "gemma4-9b")
45
+ * @param message - User message to send
46
+ * @yields Individual tokens as they are generated
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const streaming = client.streaming();
51
+ * for await (const token of streaming.chatStream("gemma4-9b", "Hello!")) {
52
+ * process.stdout.write(token);
53
+ * }
54
+ * ```
55
+ */
56
+ chatStream(modelId: string, message: string): AsyncGenerator<string>;
57
+ /**
58
+ * Stream inference tokens with a callback.
59
+ *
60
+ * @param modelId - Model identifier
61
+ * @param message - User message
62
+ * @param onToken - Callback invoked for each token
63
+ * @returns Stream result with total tokens and complete output
64
+ */
65
+ chatStreamCallback(modelId: string, message: string, onToken: (token: string) => void): Promise<StreamResult>;
66
+ /**
67
+ * Subscribe to real-time events from the node.
68
+ *
69
+ * @param eventTypes - Event types to subscribe to (e.g., "block", "transaction")
70
+ * @param onEvent - Callback invoked for each event
71
+ * @returns Subscription handle
72
+ */
73
+ subscribeEvents(eventTypes: string[], onEvent: (event: StreamEvent) => void): Promise<SubscriptionHandle>;
74
+ /**
75
+ * Open an SSE connection to an A2A or MCP endpoint.
76
+ *
77
+ * @param endpoint - Full URL of the SSE endpoint
78
+ * @param onMessage - Callback for incoming SSE messages
79
+ * @returns SSE connection handle with abort controller
80
+ */
81
+ openSseConnection(endpoint: string, onMessage?: (event: StreamEvent) => void): Promise<SseConnection>;
82
+ }
83
+ //# sourceMappingURL=streaming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,6BAA6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;;;GAKG;AACH,qBAAa,eAAe;IAId,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHhC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAER,GAAG,EAAE,SAAS;IAY3C;;;;;;;;;;;;;;OAcG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAoD3E;;;;;;;OAOG;IACG,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,YAAY,CAAC;IAaxB;;;;;;OAMG;IACG,eAAe,CACnB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GACpC,OAAO,CAAC,kBAAkB,CAAC;IA0B9B;;;;;;OAMG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GACvC,OAAO,CAAC,aAAa,CAAC;CAwC1B"}
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamingClient = void 0;
4
+ // ── Client ──
5
+ /**
6
+ * Client for streaming and real-time operations.
7
+ *
8
+ * Provides streaming chat inference via SSE, event subscriptions,
9
+ * and SSE connections to A2A/MCP servers.
10
+ */
11
+ class StreamingClient {
12
+ rpc;
13
+ endpoint;
14
+ apiEndpoint;
15
+ constructor(rpc) {
16
+ this.rpc = rpc;
17
+ this.endpoint = rpc.getEndpoint();
18
+ const ep = this.endpoint;
19
+ if (ep.includes('rpc.tenzro.network')) {
20
+ this.apiEndpoint = ep.replace('rpc.tenzro.network', 'api.tenzro.network');
21
+ }
22
+ else if (ep.includes('localhost:8545') || ep.includes('127.0.0.1:8545')) {
23
+ this.apiEndpoint = ep.replace('8545', '8080');
24
+ }
25
+ else {
26
+ this.apiEndpoint = ep;
27
+ }
28
+ }
29
+ /**
30
+ * Stream inference tokens using an async generator.
31
+ *
32
+ * @param modelId - Model identifier (e.g., "gemma4-9b")
33
+ * @param message - User message to send
34
+ * @yields Individual tokens as they are generated
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const streaming = client.streaming();
39
+ * for await (const token of streaming.chatStream("gemma4-9b", "Hello!")) {
40
+ * process.stdout.write(token);
41
+ * }
42
+ * ```
43
+ */
44
+ async *chatStream(modelId, message) {
45
+ const url = `${this.apiEndpoint.replace(/\/$/, '')}/api/chat`;
46
+ const body = {
47
+ model: modelId,
48
+ messages: [{ role: 'user', content: message }],
49
+ stream: true,
50
+ };
51
+ const response = await fetch(url, {
52
+ method: 'POST',
53
+ headers: { 'Content-Type': 'application/json' },
54
+ body: JSON.stringify(body),
55
+ });
56
+ if (!response.ok) {
57
+ throw new Error(`Streaming request failed: HTTP ${response.status}`);
58
+ }
59
+ if (!response.body) {
60
+ throw new Error('Response body is null — streaming not supported');
61
+ }
62
+ const reader = response.body.getReader();
63
+ const decoder = new TextDecoder();
64
+ try {
65
+ while (true) {
66
+ const { done, value } = await reader.read();
67
+ if (done)
68
+ break;
69
+ const text = decoder.decode(value, { stream: true });
70
+ for (const line of text.split('\n')) {
71
+ if (!line.startsWith('data: '))
72
+ continue;
73
+ const data = line.slice(6);
74
+ if (data === '[DONE]')
75
+ return;
76
+ try {
77
+ const parsed = JSON.parse(data);
78
+ const content = parsed?.choices?.[0]?.delta?.content;
79
+ if (typeof content === 'string' && content.length > 0) {
80
+ yield content;
81
+ }
82
+ }
83
+ catch {
84
+ // Skip non-JSON lines
85
+ }
86
+ }
87
+ }
88
+ }
89
+ finally {
90
+ reader.releaseLock();
91
+ }
92
+ }
93
+ /**
94
+ * Stream inference tokens with a callback.
95
+ *
96
+ * @param modelId - Model identifier
97
+ * @param message - User message
98
+ * @param onToken - Callback invoked for each token
99
+ * @returns Stream result with total tokens and complete output
100
+ */
101
+ async chatStreamCallback(modelId, message, onToken) {
102
+ let totalTokens = 0;
103
+ let output = '';
104
+ for await (const token of this.chatStream(modelId, message)) {
105
+ totalTokens++;
106
+ output += token;
107
+ onToken(token);
108
+ }
109
+ return { total_tokens: totalTokens, output };
110
+ }
111
+ /**
112
+ * Subscribe to real-time events from the node.
113
+ *
114
+ * @param eventTypes - Event types to subscribe to (e.g., "block", "transaction")
115
+ * @param onEvent - Callback invoked for each event
116
+ * @returns Subscription handle
117
+ */
118
+ async subscribeEvents(eventTypes, onEvent) {
119
+ const subscriptionId = await this.rpc.call('tenzro_subscribe', [
120
+ { event_types: eventTypes },
121
+ ]);
122
+ // Poll for events in the background
123
+ const poll = async () => {
124
+ try {
125
+ while (true) {
126
+ const events = await this.rpc.call('tenzro_pollEvents', [
127
+ { subscription_id: subscriptionId },
128
+ ]);
129
+ for (const event of events) {
130
+ onEvent(event);
131
+ }
132
+ await new Promise((resolve) => setTimeout(resolve, 1000));
133
+ }
134
+ }
135
+ catch {
136
+ // Subscription ended
137
+ }
138
+ };
139
+ poll(); // Fire and forget
140
+ return { id: subscriptionId };
141
+ }
142
+ /**
143
+ * Open an SSE connection to an A2A or MCP endpoint.
144
+ *
145
+ * @param endpoint - Full URL of the SSE endpoint
146
+ * @param onMessage - Callback for incoming SSE messages
147
+ * @returns SSE connection handle with abort controller
148
+ */
149
+ async openSseConnection(endpoint, onMessage) {
150
+ const abort = new AbortController();
151
+ if (onMessage) {
152
+ // Start reading SSE in the background
153
+ fetch(endpoint, {
154
+ headers: { Accept: 'text/event-stream' },
155
+ signal: abort.signal,
156
+ })
157
+ .then(async (response) => {
158
+ if (!response.ok || !response.body)
159
+ return;
160
+ const reader = response.body.getReader();
161
+ const decoder = new TextDecoder();
162
+ try {
163
+ while (true) {
164
+ const { done, value } = await reader.read();
165
+ if (done)
166
+ break;
167
+ const text = decoder.decode(value, { stream: true });
168
+ for (const line of text.split('\n')) {
169
+ if (!line.startsWith('data: '))
170
+ continue;
171
+ try {
172
+ const parsed = JSON.parse(line.slice(6));
173
+ onMessage(parsed);
174
+ }
175
+ catch {
176
+ // Skip non-JSON
177
+ }
178
+ }
179
+ }
180
+ }
181
+ finally {
182
+ reader.releaseLock();
183
+ }
184
+ })
185
+ .catch(() => {
186
+ // Connection closed
187
+ });
188
+ }
189
+ return { url: endpoint, abort };
190
+ }
191
+ }
192
+ exports.StreamingClient = StreamingClient;
193
+ //# sourceMappingURL=streaming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"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"}