@teneo-protocol/sdk 1.0.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 (281) hide show
  1. package/.dockerignore +14 -0
  2. package/.env.test.example +14 -0
  3. package/.eslintrc.json +26 -0
  4. package/.github/workflows/claude-code-review.yml +78 -0
  5. package/.github/workflows/claude-reviewer.yml +64 -0
  6. package/.github/workflows/publish-npm.yml +38 -0
  7. package/.github/workflows/push-to-main.yml +23 -0
  8. package/.node-version +1 -0
  9. package/.prettierrc +11 -0
  10. package/Dockerfile +25 -0
  11. package/LICENCE +661 -0
  12. package/README.md +709 -0
  13. package/dist/constants.d.ts +42 -0
  14. package/dist/constants.d.ts.map +1 -0
  15. package/dist/constants.js +45 -0
  16. package/dist/constants.js.map +1 -0
  17. package/dist/core/websocket-client.d.ts +261 -0
  18. package/dist/core/websocket-client.d.ts.map +1 -0
  19. package/dist/core/websocket-client.js +875 -0
  20. package/dist/core/websocket-client.js.map +1 -0
  21. package/dist/formatters/response-formatter.d.ts +354 -0
  22. package/dist/formatters/response-formatter.d.ts.map +1 -0
  23. package/dist/formatters/response-formatter.js +575 -0
  24. package/dist/formatters/response-formatter.js.map +1 -0
  25. package/dist/handlers/message-handler-registry.d.ts +155 -0
  26. package/dist/handlers/message-handler-registry.d.ts.map +1 -0
  27. package/dist/handlers/message-handler-registry.js +216 -0
  28. package/dist/handlers/message-handler-registry.js.map +1 -0
  29. package/dist/handlers/message-handlers/agent-selected-handler.d.ts +112 -0
  30. package/dist/handlers/message-handlers/agent-selected-handler.d.ts.map +1 -0
  31. package/dist/handlers/message-handlers/agent-selected-handler.js +40 -0
  32. package/dist/handlers/message-handlers/agent-selected-handler.js.map +1 -0
  33. package/dist/handlers/message-handlers/agents-list-handler.d.ts +14 -0
  34. package/dist/handlers/message-handlers/agents-list-handler.d.ts.map +1 -0
  35. package/dist/handlers/message-handlers/agents-list-handler.js +25 -0
  36. package/dist/handlers/message-handlers/agents-list-handler.js.map +1 -0
  37. package/dist/handlers/message-handlers/auth-error-handler.d.ts +71 -0
  38. package/dist/handlers/message-handlers/auth-error-handler.d.ts.map +1 -0
  39. package/dist/handlers/message-handlers/auth-error-handler.js +30 -0
  40. package/dist/handlers/message-handlers/auth-error-handler.js.map +1 -0
  41. package/dist/handlers/message-handlers/auth-message-handler.d.ts +18 -0
  42. package/dist/handlers/message-handlers/auth-message-handler.d.ts.map +1 -0
  43. package/dist/handlers/message-handlers/auth-message-handler.js +60 -0
  44. package/dist/handlers/message-handlers/auth-message-handler.js.map +1 -0
  45. package/dist/handlers/message-handlers/auth-required-handler.d.ts +76 -0
  46. package/dist/handlers/message-handlers/auth-required-handler.d.ts.map +1 -0
  47. package/dist/handlers/message-handlers/auth-required-handler.js +23 -0
  48. package/dist/handlers/message-handlers/auth-required-handler.js.map +1 -0
  49. package/dist/handlers/message-handlers/auth-success-handler.d.ts +18 -0
  50. package/dist/handlers/message-handlers/auth-success-handler.d.ts.map +1 -0
  51. package/dist/handlers/message-handlers/auth-success-handler.js +51 -0
  52. package/dist/handlers/message-handlers/auth-success-handler.js.map +1 -0
  53. package/dist/handlers/message-handlers/base-handler.d.ts +55 -0
  54. package/dist/handlers/message-handlers/base-handler.d.ts.map +1 -0
  55. package/dist/handlers/message-handlers/base-handler.js +83 -0
  56. package/dist/handlers/message-handlers/base-handler.js.map +1 -0
  57. package/dist/handlers/message-handlers/challenge-handler.d.ts +73 -0
  58. package/dist/handlers/message-handlers/challenge-handler.d.ts.map +1 -0
  59. package/dist/handlers/message-handlers/challenge-handler.js +47 -0
  60. package/dist/handlers/message-handlers/challenge-handler.js.map +1 -0
  61. package/dist/handlers/message-handlers/error-message-handler.d.ts +76 -0
  62. package/dist/handlers/message-handlers/error-message-handler.d.ts.map +1 -0
  63. package/dist/handlers/message-handlers/error-message-handler.js +29 -0
  64. package/dist/handlers/message-handlers/error-message-handler.js.map +1 -0
  65. package/dist/handlers/message-handlers/index.d.ts +28 -0
  66. package/dist/handlers/message-handlers/index.d.ts.map +1 -0
  67. package/dist/handlers/message-handlers/index.js +100 -0
  68. package/dist/handlers/message-handlers/index.js.map +1 -0
  69. package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts +122 -0
  70. package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts.map +1 -0
  71. package/dist/handlers/message-handlers/list-rooms-response-handler.js +30 -0
  72. package/dist/handlers/message-handlers/list-rooms-response-handler.js.map +1 -0
  73. package/dist/handlers/message-handlers/ping-pong-handler.d.ts +104 -0
  74. package/dist/handlers/message-handlers/ping-pong-handler.d.ts.map +1 -0
  75. package/dist/handlers/message-handlers/ping-pong-handler.js +36 -0
  76. package/dist/handlers/message-handlers/ping-pong-handler.js.map +1 -0
  77. package/dist/handlers/message-handlers/regular-message-handler.d.ts +56 -0
  78. package/dist/handlers/message-handlers/regular-message-handler.d.ts.map +1 -0
  79. package/dist/handlers/message-handlers/regular-message-handler.js +59 -0
  80. package/dist/handlers/message-handlers/regular-message-handler.js.map +1 -0
  81. package/dist/handlers/message-handlers/subscribe-response-handler.d.ts +81 -0
  82. package/dist/handlers/message-handlers/subscribe-response-handler.d.ts.map +1 -0
  83. package/dist/handlers/message-handlers/subscribe-response-handler.js +48 -0
  84. package/dist/handlers/message-handlers/subscribe-response-handler.js.map +1 -0
  85. package/dist/handlers/message-handlers/task-response-handler.d.ts +14 -0
  86. package/dist/handlers/message-handlers/task-response-handler.d.ts.map +1 -0
  87. package/dist/handlers/message-handlers/task-response-handler.js +44 -0
  88. package/dist/handlers/message-handlers/task-response-handler.js.map +1 -0
  89. package/dist/handlers/message-handlers/types.d.ts +51 -0
  90. package/dist/handlers/message-handlers/types.d.ts.map +1 -0
  91. package/dist/handlers/message-handlers/types.js +7 -0
  92. package/dist/handlers/message-handlers/types.js.map +1 -0
  93. package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts +81 -0
  94. package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts.map +1 -0
  95. package/dist/handlers/message-handlers/unsubscribe-response-handler.js +48 -0
  96. package/dist/handlers/message-handlers/unsubscribe-response-handler.js.map +1 -0
  97. package/dist/handlers/webhook-handler.d.ts +202 -0
  98. package/dist/handlers/webhook-handler.d.ts.map +1 -0
  99. package/dist/handlers/webhook-handler.js +511 -0
  100. package/dist/handlers/webhook-handler.js.map +1 -0
  101. package/dist/index.d.ts +71 -0
  102. package/dist/index.d.ts.map +1 -0
  103. package/dist/index.js +217 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/managers/agent-registry.d.ts +173 -0
  106. package/dist/managers/agent-registry.d.ts.map +1 -0
  107. package/dist/managers/agent-registry.js +310 -0
  108. package/dist/managers/agent-registry.js.map +1 -0
  109. package/dist/managers/connection-manager.d.ts +134 -0
  110. package/dist/managers/connection-manager.d.ts.map +1 -0
  111. package/dist/managers/connection-manager.js +176 -0
  112. package/dist/managers/connection-manager.js.map +1 -0
  113. package/dist/managers/index.d.ts +9 -0
  114. package/dist/managers/index.d.ts.map +1 -0
  115. package/dist/managers/index.js +16 -0
  116. package/dist/managers/index.js.map +1 -0
  117. package/dist/managers/message-router.d.ts +112 -0
  118. package/dist/managers/message-router.d.ts.map +1 -0
  119. package/dist/managers/message-router.js +260 -0
  120. package/dist/managers/message-router.js.map +1 -0
  121. package/dist/managers/room-manager.d.ts +165 -0
  122. package/dist/managers/room-manager.d.ts.map +1 -0
  123. package/dist/managers/room-manager.js +227 -0
  124. package/dist/managers/room-manager.js.map +1 -0
  125. package/dist/teneo-sdk.d.ts +703 -0
  126. package/dist/teneo-sdk.d.ts.map +1 -0
  127. package/dist/teneo-sdk.js +907 -0
  128. package/dist/teneo-sdk.js.map +1 -0
  129. package/dist/types/config.d.ts +1047 -0
  130. package/dist/types/config.d.ts.map +1 -0
  131. package/dist/types/config.js +720 -0
  132. package/dist/types/config.js.map +1 -0
  133. package/dist/types/error-codes.d.ts +29 -0
  134. package/dist/types/error-codes.d.ts.map +1 -0
  135. package/dist/types/error-codes.js +41 -0
  136. package/dist/types/error-codes.js.map +1 -0
  137. package/dist/types/events.d.ts +616 -0
  138. package/dist/types/events.d.ts.map +1 -0
  139. package/dist/types/events.js +261 -0
  140. package/dist/types/events.js.map +1 -0
  141. package/dist/types/health.d.ts +40 -0
  142. package/dist/types/health.d.ts.map +1 -0
  143. package/dist/types/health.js +6 -0
  144. package/dist/types/health.js.map +1 -0
  145. package/dist/types/index.d.ts +10 -0
  146. package/dist/types/index.d.ts.map +1 -0
  147. package/dist/types/index.js +123 -0
  148. package/dist/types/index.js.map +1 -0
  149. package/dist/types/messages.d.ts +3734 -0
  150. package/dist/types/messages.d.ts.map +1 -0
  151. package/dist/types/messages.js +482 -0
  152. package/dist/types/messages.js.map +1 -0
  153. package/dist/types/validation.d.ts +81 -0
  154. package/dist/types/validation.d.ts.map +1 -0
  155. package/dist/types/validation.js +115 -0
  156. package/dist/types/validation.js.map +1 -0
  157. package/dist/utils/bounded-queue.d.ts +127 -0
  158. package/dist/utils/bounded-queue.d.ts.map +1 -0
  159. package/dist/utils/bounded-queue.js +181 -0
  160. package/dist/utils/bounded-queue.js.map +1 -0
  161. package/dist/utils/circuit-breaker.d.ts +141 -0
  162. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  163. package/dist/utils/circuit-breaker.js +215 -0
  164. package/dist/utils/circuit-breaker.js.map +1 -0
  165. package/dist/utils/deduplication-cache.d.ts +110 -0
  166. package/dist/utils/deduplication-cache.d.ts.map +1 -0
  167. package/dist/utils/deduplication-cache.js +177 -0
  168. package/dist/utils/deduplication-cache.js.map +1 -0
  169. package/dist/utils/event-waiter.d.ts +101 -0
  170. package/dist/utils/event-waiter.d.ts.map +1 -0
  171. package/dist/utils/event-waiter.js +118 -0
  172. package/dist/utils/event-waiter.js.map +1 -0
  173. package/dist/utils/index.d.ts +51 -0
  174. package/dist/utils/index.d.ts.map +1 -0
  175. package/dist/utils/index.js +72 -0
  176. package/dist/utils/index.js.map +1 -0
  177. package/dist/utils/logger.d.ts +22 -0
  178. package/dist/utils/logger.d.ts.map +1 -0
  179. package/dist/utils/logger.js +91 -0
  180. package/dist/utils/logger.js.map +1 -0
  181. package/dist/utils/rate-limiter.d.ts +122 -0
  182. package/dist/utils/rate-limiter.d.ts.map +1 -0
  183. package/dist/utils/rate-limiter.js +190 -0
  184. package/dist/utils/rate-limiter.js.map +1 -0
  185. package/dist/utils/retry-policy.d.ts +191 -0
  186. package/dist/utils/retry-policy.d.ts.map +1 -0
  187. package/dist/utils/retry-policy.js +225 -0
  188. package/dist/utils/retry-policy.js.map +1 -0
  189. package/dist/utils/secure-private-key.d.ts +113 -0
  190. package/dist/utils/secure-private-key.d.ts.map +1 -0
  191. package/dist/utils/secure-private-key.js +188 -0
  192. package/dist/utils/secure-private-key.js.map +1 -0
  193. package/dist/utils/signature-verifier.d.ts +143 -0
  194. package/dist/utils/signature-verifier.d.ts.map +1 -0
  195. package/dist/utils/signature-verifier.js +238 -0
  196. package/dist/utils/signature-verifier.js.map +1 -0
  197. package/dist/utils/ssrf-validator.d.ts +36 -0
  198. package/dist/utils/ssrf-validator.d.ts.map +1 -0
  199. package/dist/utils/ssrf-validator.js +195 -0
  200. package/dist/utils/ssrf-validator.js.map +1 -0
  201. package/examples/.env.example +17 -0
  202. package/examples/basic-usage.ts +211 -0
  203. package/examples/production-dashboard/.env.example +153 -0
  204. package/examples/production-dashboard/package.json +39 -0
  205. package/examples/production-dashboard/public/dashboard.html +642 -0
  206. package/examples/production-dashboard/server.ts +753 -0
  207. package/examples/webhook-integration.ts +239 -0
  208. package/examples/x-influencer-battle-redesign.html +1065 -0
  209. package/examples/x-influencer-battle-server.ts +217 -0
  210. package/examples/x-influencer-battle.html +787 -0
  211. package/package.json +65 -0
  212. package/src/constants.ts +43 -0
  213. package/src/core/websocket-client.test.ts +512 -0
  214. package/src/core/websocket-client.ts +1056 -0
  215. package/src/formatters/response-formatter.test.ts +571 -0
  216. package/src/formatters/response-formatter.ts +677 -0
  217. package/src/handlers/message-handler-registry.ts +239 -0
  218. package/src/handlers/message-handlers/agent-selected-handler.ts +40 -0
  219. package/src/handlers/message-handlers/agents-list-handler.ts +26 -0
  220. package/src/handlers/message-handlers/auth-error-handler.ts +31 -0
  221. package/src/handlers/message-handlers/auth-message-handler.ts +66 -0
  222. package/src/handlers/message-handlers/auth-required-handler.ts +23 -0
  223. package/src/handlers/message-handlers/auth-success-handler.ts +57 -0
  224. package/src/handlers/message-handlers/base-handler.ts +101 -0
  225. package/src/handlers/message-handlers/challenge-handler.ts +57 -0
  226. package/src/handlers/message-handlers/error-message-handler.ts +27 -0
  227. package/src/handlers/message-handlers/index.ts +77 -0
  228. package/src/handlers/message-handlers/list-rooms-response-handler.ts +28 -0
  229. package/src/handlers/message-handlers/ping-pong-handler.ts +30 -0
  230. package/src/handlers/message-handlers/regular-message-handler.ts +65 -0
  231. package/src/handlers/message-handlers/subscribe-response-handler.ts +47 -0
  232. package/src/handlers/message-handlers/task-response-handler.ts +45 -0
  233. package/src/handlers/message-handlers/types.ts +77 -0
  234. package/src/handlers/message-handlers/unsubscribe-response-handler.ts +47 -0
  235. package/src/handlers/webhook-handler.test.ts +789 -0
  236. package/src/handlers/webhook-handler.ts +576 -0
  237. package/src/index.ts +269 -0
  238. package/src/managers/agent-registry.test.ts +466 -0
  239. package/src/managers/agent-registry.ts +347 -0
  240. package/src/managers/connection-manager.ts +195 -0
  241. package/src/managers/index.ts +9 -0
  242. package/src/managers/message-router.ts +349 -0
  243. package/src/managers/room-manager.ts +248 -0
  244. package/src/teneo-sdk.ts +1022 -0
  245. package/src/types/config.test.ts +325 -0
  246. package/src/types/config.ts +799 -0
  247. package/src/types/error-codes.ts +44 -0
  248. package/src/types/events.test.ts +302 -0
  249. package/src/types/events.ts +382 -0
  250. package/src/types/health.ts +46 -0
  251. package/src/types/index.ts +199 -0
  252. package/src/types/messages.test.ts +660 -0
  253. package/src/types/messages.ts +570 -0
  254. package/src/types/validation.ts +123 -0
  255. package/src/utils/bounded-queue.test.ts +356 -0
  256. package/src/utils/bounded-queue.ts +205 -0
  257. package/src/utils/circuit-breaker.test.ts +394 -0
  258. package/src/utils/circuit-breaker.ts +262 -0
  259. package/src/utils/deduplication-cache.test.ts +380 -0
  260. package/src/utils/deduplication-cache.ts +198 -0
  261. package/src/utils/event-waiter.test.ts +381 -0
  262. package/src/utils/event-waiter.ts +172 -0
  263. package/src/utils/index.ts +74 -0
  264. package/src/utils/logger.ts +87 -0
  265. package/src/utils/rate-limiter.test.ts +341 -0
  266. package/src/utils/rate-limiter.ts +211 -0
  267. package/src/utils/retry-policy.test.ts +558 -0
  268. package/src/utils/retry-policy.ts +272 -0
  269. package/src/utils/secure-private-key.test.ts +356 -0
  270. package/src/utils/secure-private-key.ts +205 -0
  271. package/src/utils/signature-verifier.test.ts +464 -0
  272. package/src/utils/signature-verifier.ts +298 -0
  273. package/src/utils/ssrf-validator.test.ts +372 -0
  274. package/src/utils/ssrf-validator.ts +224 -0
  275. package/tests/integration/real-server.test.ts +740 -0
  276. package/tests/integration/websocket.test.ts +381 -0
  277. package/tests/integration-setup.ts +16 -0
  278. package/tests/setup.ts +34 -0
  279. package/tsconfig.json +32 -0
  280. package/vitest.config.ts +42 -0
  281. package/vitest.integration.config.ts +23 -0
@@ -0,0 +1,703 @@
1
+ /**
2
+ * Main Teneo Protocol SDK class
3
+ * Provides a unified interface for external platforms to interact with Teneo agents
4
+ * Uses manager classes to follow Single Responsibility Principle
5
+ */
6
+ import { EventEmitter } from "eventemitter3";
7
+ import { z } from "zod";
8
+ import { PartialSDKConfig, SDKConfigBuilder, Agent, Room, RoomInfo, type HealthStatus } from "./types";
9
+ import { SDKEvents } from "./types/events";
10
+ import { FormattedResponse, ResponseFormatOptions } from "./formatters/response-formatter";
11
+ import { SendMessageOptions, AgentCommand } from "./managers";
12
+ export type { SendMessageOptions, AgentCommand };
13
+ export declare const SendMessageOptionsSchema: z.ZodObject<{
14
+ room: z.ZodOptional<z.ZodString>;
15
+ from: z.ZodOptional<z.ZodString>;
16
+ waitForResponse: z.ZodOptional<z.ZodBoolean>;
17
+ timeout: z.ZodOptional<z.ZodNumber>;
18
+ format: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["raw", "humanized", "both"]>, z.ZodLiteral<"raw">, z.ZodLiteral<"humanized">]>>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ room?: string | undefined;
21
+ from?: string | undefined;
22
+ timeout?: number | undefined;
23
+ format?: "raw" | "humanized" | "both" | undefined;
24
+ waitForResponse?: boolean | undefined;
25
+ }, {
26
+ room?: string | undefined;
27
+ from?: string | undefined;
28
+ timeout?: number | undefined;
29
+ format?: "raw" | "humanized" | "both" | undefined;
30
+ waitForResponse?: boolean | undefined;
31
+ }>;
32
+ export declare const AgentCommandSchema: z.ZodObject<{
33
+ agent: z.ZodString;
34
+ command: z.ZodEffects<z.ZodString, string, string>;
35
+ room: z.ZodOptional<z.ZodString>;
36
+ }, "strip", z.ZodTypeAny, {
37
+ agent: string;
38
+ command: string;
39
+ room?: string | undefined;
40
+ }, {
41
+ agent: string;
42
+ command: string;
43
+ room?: string | undefined;
44
+ }>;
45
+ export declare class TeneoSDK extends EventEmitter<SDKEvents> {
46
+ private config;
47
+ private readonly logger;
48
+ private isDestroyed;
49
+ private readonly wsClient;
50
+ private readonly webhookHandler;
51
+ private readonly responseFormatter;
52
+ private readonly connection;
53
+ private readonly rooms;
54
+ private readonly agents;
55
+ private readonly messages;
56
+ /**
57
+ * Creates a new instance of the Teneo Protocol SDK.
58
+ * Initializes all core components, managers, and validates the provided configuration.
59
+ * The SDK handles WebSocket connections, authentication, message routing, and webhook delivery.
60
+ *
61
+ * @param config - Partial SDK configuration object (only wsUrl is required)
62
+ * @param config.wsUrl - WebSocket URL to connect to (e.g., 'wss://teneo.example.com')
63
+ * @param config.privateKey - Optional Ethereum private key for wallet-based authentication
64
+ * @param config.walletAddress - Optional wallet address (derived from privateKey if not provided)
65
+ * @param config.autoJoinRooms - Optional array of room IDs to subscribe to automatically on connection
66
+ * @param config.webhookUrl - Optional webhook URL for receiving event notifications
67
+ * @param config.reconnect - Enable automatic reconnection (default: true)
68
+ * @param config.logLevel - Logging level: 'debug', 'info', 'warn', 'error', 'silent' (default: 'info')
69
+ * @param config.responseFormat - Response format: 'raw', 'humanized', 'both' (default: 'humanized')
70
+ *
71
+ * @throws {SDKError} If configuration is invalid (ErrorCode.INVALID_CONFIG)
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * // Minimal configuration
76
+ * const sdk = new TeneoSDK({
77
+ * wsUrl: 'wss://teneo.example.com',
78
+ * privateKey: '0x...'
79
+ * });
80
+ *
81
+ * // Full configuration
82
+ * const sdk = new TeneoSDK({
83
+ * wsUrl: 'wss://teneo.example.com',
84
+ * privateKey: '0x...',
85
+ * autoJoinRooms: ['general', 'announcements'],
86
+ * webhookUrl: 'https://api.example.com/webhooks',
87
+ * logLevel: 'debug',
88
+ * responseFormat: 'both',
89
+ * reconnect: true,
90
+ * maxReconnectAttempts: 10
91
+ * });
92
+ *
93
+ * // Using builder pattern (recommended for complex configs)
94
+ * const sdk = TeneoSDK.builder()
95
+ * .wsUrl('wss://teneo.example.com')
96
+ * .privateKey('0x...')
97
+ * .withAutoJoinRooms(['general'])
98
+ * .build();
99
+ * ```
100
+ *
101
+ * @see {@link SDKConfigBuilder} for fluent configuration API
102
+ * @see {@link TeneoSDK.builder} for creating a configuration builder
103
+ */
104
+ constructor(config: PartialSDKConfig);
105
+ /**
106
+ * Establishes a connection to the Teneo network via WebSocket.
107
+ * Handles authentication automatically and joins any configured auto-join rooms.
108
+ * Emits 'connection:open', 'auth:success', and 'ready' events on successful connection.
109
+ *
110
+ * @returns Promise that resolves when connection and authentication are complete
111
+ * @throws {SDKError} If the SDK has been destroyed (ErrorCode.SDK_DESTROYED)
112
+ * @throws {ConnectionError} If WebSocket connection fails
113
+ * @throws {AuthenticationError} If authentication fails
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const sdk = new TeneoSDK({ wsUrl: 'wss://example.com', privateKey: '0x...' });
118
+ * await sdk.connect();
119
+ * console.log('Connected to Teneo network');
120
+ * ```
121
+ */
122
+ connect(): Promise<void>;
123
+ /**
124
+ * Disconnects from the Teneo network and cleans up all active connections.
125
+ * Clears all timers, pending messages, and stops automatic reconnection attempts.
126
+ * Emits 'disconnect' event after disconnection is complete.
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * sdk.disconnect();
131
+ * console.log('Disconnected from Teneo network');
132
+ * ```
133
+ */
134
+ disconnect(): void;
135
+ /**
136
+ * Sends a message to agents via the coordinator, which intelligently selects
137
+ * the most appropriate agent based on the message content and agent capabilities.
138
+ * Can optionally wait for and return the agent's response.
139
+ *
140
+ * @param content - The message content to send to agents
141
+ * @param options - Optional message configuration
142
+ * @param options.room - Room to send message to (defaults to configured default room)
143
+ * @param options.from - Sender address (defaults to authenticated wallet address)
144
+ * @param options.waitForResponse - Whether to wait for agent response (default: false)
145
+ * @param options.timeout - Response timeout in milliseconds (default: 60000, max: 300000)
146
+ * @param options.format - Response format: 'raw', 'humanized', or 'both'
147
+ * @returns Promise that resolves to FormattedResponse if waitForResponse is true, void otherwise
148
+ * @throws {SDKError} If not connected to the network (ErrorCode.NOT_CONNECTED)
149
+ * @throws {ValidationError} If content is empty or options are invalid
150
+ * @throws {TimeoutError} If waitForResponse is true and timeout is exceeded
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * // Fire-and-forget message
155
+ * await sdk.sendMessage('What is the weather today?');
156
+ *
157
+ * // Wait for response
158
+ * const response = await sdk.sendMessage('What is 2+2?', {
159
+ * waitForResponse: true,
160
+ * timeout: 30000
161
+ * });
162
+ * console.log(response.humanized); // Agent's response in human-readable format
163
+ * ```
164
+ */
165
+ sendMessage(content: string, options: SendMessageOptions): Promise<FormattedResponse | void>;
166
+ /**
167
+ * Sends a direct command to a specific agent, bypassing the coordinator.
168
+ * Use this when you know exactly which agent should handle the request.
169
+ * The command is formatted as "@agentName command" internally.
170
+ *
171
+ * @param command - The direct agent command configuration
172
+ * @param command.agent - The agent ID or name to send the command to
173
+ * @param command.command - The command text to send to the agent
174
+ * @param command.room - Room to send command to (defaults to configured default room)
175
+ * @returns Promise that resolves when the command is sent
176
+ * @throws {SDKError} If not connected to the network (ErrorCode.NOT_CONNECTED)
177
+ * @throws {ValidationError} If agent or command are empty, or room is not configured
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * // Send command to specific agent
182
+ * await sdk.sendDirectCommand({
183
+ * agent: 'weather-agent',
184
+ * command: 'Get forecast for New York',
185
+ * room: 'general'
186
+ * });
187
+ * ```
188
+ */
189
+ sendDirectCommand(command: AgentCommand): Promise<FormattedResponse | void>;
190
+ /**
191
+ * Subscribes to a specified room in the Teneo network.
192
+ * Agents in the room will be able to see and respond to your messages.
193
+ * Emits 'room:subscribed' event when successfully subscribed.
194
+ *
195
+ * @param roomId - The ID of the room to subscribe to
196
+ * @returns Promise that resolves when the room has been subscribed
197
+ * @throws {SDKError} If not connected to the network (ErrorCode.NOT_CONNECTED)
198
+ * @throws {ValidationError} If roomId is empty or invalid
199
+ *
200
+ * @example
201
+ * ```typescript
202
+ * await sdk.subscribeToRoom('general');
203
+ * console.log('Subscribed to general room');
204
+ * ```
205
+ */
206
+ subscribeToRoom(roomId: string): Promise<void>;
207
+ /**
208
+ * Unsubscribes from a specified room in the Teneo network.
209
+ * You will no longer receive messages from agents in this room.
210
+ * Emits 'room:unsubscribed' event when successfully unsubscribed.
211
+ *
212
+ * @param roomId - The ID of the room to unsubscribe from
213
+ * @returns Promise that resolves when the room has been unsubscribed
214
+ * @throws {SDKError} If not connected to the network (ErrorCode.NOT_CONNECTED)
215
+ * @throws {ValidationError} If roomId is empty or invalid
216
+ *
217
+ * @example
218
+ * ```typescript
219
+ * await sdk.unsubscribeFromRoom('general');
220
+ * console.log('Unsubscribed from general room');
221
+ * ```
222
+ */
223
+ unsubscribeFromRoom(roomId: string): Promise<void>;
224
+ /**
225
+ * Lists all rooms available to the user.
226
+ * Fetches room list from the server including owned and shared rooms.
227
+ * Emits 'room:list' event when the list is received.
228
+ *
229
+ * @returns Promise that resolves to array of room information
230
+ * @throws {SDKError} If not connected to the network (ErrorCode.NOT_CONNECTED)
231
+ *
232
+ * @example
233
+ * ```typescript
234
+ * const rooms = await sdk.listRooms();
235
+ * rooms.forEach(room => {
236
+ * console.log(`${room.name} (${room.is_public ? 'public' : 'private'})`);
237
+ * console.log(`Owner: ${room.is_owner}`);
238
+ * });
239
+ * ```
240
+ */
241
+ listRooms(): Promise<RoomInfo[]>;
242
+ /**
243
+ * Gets all rooms currently subscribed to.
244
+ * Returns array of room IDs that you're actively listening to for messages.
245
+ *
246
+ * @returns Array of subscribed room IDs
247
+ *
248
+ * @example
249
+ * ```typescript
250
+ * const rooms = sdk.getSubscribedRooms();
251
+ * console.log(`Subscribed to ${rooms.length} rooms:`, rooms);
252
+ * // Example output: Subscribed to 3 rooms: ['general', 'support', 'trading']
253
+ * ```
254
+ */
255
+ getSubscribedRooms(): string[];
256
+ /**
257
+ * Gets a list of all available agents in the Teneo network.
258
+ * The list is automatically updated when new agents join or leave.
259
+ * Returns a read-only array to prevent external modification.
260
+ *
261
+ * @returns Read-only array of all available agents
262
+ *
263
+ * @example
264
+ * ```typescript
265
+ * const agents = sdk.getAgents();
266
+ * console.log(`Found ${agents.length} agents:`);
267
+ * agents.forEach(agent => {
268
+ * console.log(`- ${agent.name}: ${agent.description}`);
269
+ * });
270
+ * ```
271
+ */
272
+ getAgents(): ReadonlyArray<Agent>;
273
+ /**
274
+ * Gets a specific agent by its unique ID.
275
+ * Returns undefined if no agent with the specified ID exists.
276
+ *
277
+ * @param agentId - The unique identifier of the agent to retrieve
278
+ * @returns The agent object if found, undefined otherwise
279
+ *
280
+ * @example
281
+ * ```typescript
282
+ * const agent = sdk.getAgent('weather-agent-001');
283
+ * if (agent) {
284
+ * console.log(`Found agent: ${agent.name}`);
285
+ * console.log(`Status: ${agent.status}`);
286
+ * } else {
287
+ * console.log('Agent not found');
288
+ * }
289
+ * ```
290
+ */
291
+ getAgent(agentId: string): Agent | undefined;
292
+ /**
293
+ * Finds all agents that have a specific capability using O(1) indexed lookup (PERF-3).
294
+ * Much faster than filtering through all agents manually.
295
+ * Uses capability index for constant-time lookups regardless of agent count.
296
+ *
297
+ * @param capability - The capability name to search for (case-insensitive)
298
+ * @returns Read-only array of agents with the specified capability
299
+ * @throws {ValidationError} If capability name is invalid
300
+ *
301
+ * @example
302
+ * ```typescript
303
+ * // Find all weather-capable agents
304
+ * const weatherAgents = sdk.findAgentsByCapability('weather-forecast');
305
+ * console.log(`Found ${weatherAgents.length} weather agents`);
306
+ *
307
+ * weatherAgents.forEach(agent => {
308
+ * console.log(`- ${agent.name}: ${agent.description}`);
309
+ * });
310
+ * ```
311
+ */
312
+ findAgentsByCapability(capability: string): ReadonlyArray<Agent>;
313
+ /**
314
+ * Finds agents by name using O(k) token-based search (PERF-3).
315
+ * Supports partial matching - searches for tokens within agent names.
316
+ * Tokenizes both the search query and agent names for flexible matching.
317
+ *
318
+ * @param name - Name or partial name to search for (case-insensitive)
319
+ * @returns Read-only array of agents matching the search
320
+ * @throws {ValidationError} If name is invalid
321
+ *
322
+ * @example
323
+ * ```typescript
324
+ * // Find all agents with "weather" in their name
325
+ * const agents = sdk.findAgentsByName('weather');
326
+ * // Matches: "Weather Agent", "Weather Forecast Bot", "Advanced Weather API", etc.
327
+ *
328
+ * console.log(`Found ${agents.length} agents matching 'weather'`);
329
+ * ```
330
+ */
331
+ findAgentsByName(name: string): ReadonlyArray<Agent>;
332
+ /**
333
+ * Finds all agents with a specific status using O(1) indexed lookup (PERF-3).
334
+ * Uses status index for constant-time lookups regardless of agent count.
335
+ *
336
+ * @param status - Agent status: 'online' or 'offline' (case-insensitive)
337
+ * @returns Read-only array of agents with the specified status
338
+ * @throws {ValidationError} If status is invalid
339
+ *
340
+ * @example
341
+ * ```typescript
342
+ * // Get all online agents
343
+ * const onlineAgents = sdk.findAgentsByStatus('online');
344
+ * console.log(`${onlineAgents.length} agents are currently online`);
345
+ *
346
+ * // Get offline agents
347
+ * const offlineAgents = sdk.findAgentsByStatus('offline');
348
+ * ```
349
+ */
350
+ findAgentsByStatus(status: string): ReadonlyArray<Agent>;
351
+ /**
352
+ * Gets a list of all available rooms in the Teneo network.
353
+ * Includes rooms you have access to based on your authentication.
354
+ * Returns a read-only array to prevent external modification.
355
+ *
356
+ * @returns Read-only array of all available rooms
357
+ *
358
+ * @example
359
+ * ```typescript
360
+ * const rooms = sdk.getRooms();
361
+ * console.log(`Available rooms: ${rooms.length}`);
362
+ * rooms.forEach(room => {
363
+ * console.log(`- ${room.id} (${room.name})`);
364
+ * });
365
+ * ```
366
+ */
367
+ getRooms(): ReadonlyArray<Room>;
368
+ /**
369
+ * Gets a specific room by its unique ID.
370
+ * Returns undefined if no room with the specified ID exists or if you don't have access.
371
+ *
372
+ * @param roomId - The unique identifier of the room to retrieve
373
+ * @returns The room object if found, undefined otherwise
374
+ *
375
+ * @example
376
+ * ```typescript
377
+ * const room = sdk.getRoom('general');
378
+ * if (room) {
379
+ * console.log(`Found room: ${room.name}`);
380
+ * console.log(`Members: ${room.members?.length ?? 0}`);
381
+ * } else {
382
+ * console.log('Room not found or no access');
383
+ * }
384
+ * ```
385
+ */
386
+ getRoom(roomId: string): Room | undefined;
387
+ /**
388
+ * Configures webhook URL and headers for receiving real-time event notifications.
389
+ * Webhooks allow you to receive events at your server endpoint via HTTP POST requests.
390
+ * Events include messages, agent responses, errors, and connection state changes.
391
+ *
392
+ * @param url - The webhook URL endpoint to receive events (must be HTTPS unless localhost)
393
+ * @param headers - Optional custom HTTP headers to include with webhook requests
394
+ * @throws {WebhookError} If URL is invalid or insecure (non-HTTPS and not localhost)
395
+ *
396
+ * @example
397
+ * ```typescript
398
+ * sdk.configureWebhook('https://api.example.com/webhooks/teneo', {
399
+ * 'Authorization': 'Bearer your-token',
400
+ * 'X-Custom-Header': 'value'
401
+ * });
402
+ *
403
+ * // Listen for webhook events
404
+ * sdk.on('webhook:sent', (payload, url) => {
405
+ * console.log('Webhook sent:', payload.event);
406
+ * });
407
+ * ```
408
+ */
409
+ configureWebhook(url: string, headers?: Record<string, string>): void;
410
+ /**
411
+ * Gets the current WebSocket connection state including connection status,
412
+ * authentication status, reconnection attempts, and timestamps.
413
+ *
414
+ * @returns Object containing detailed connection state information
415
+ * @returns {boolean} returns.connected - Whether WebSocket is currently connected
416
+ * @returns {boolean} returns.authenticated - Whether authentication is complete
417
+ * @returns {boolean} returns.reconnecting - Whether currently attempting to reconnect
418
+ * @returns {number} returns.reconnectAttempts - Number of reconnection attempts made
419
+ * @returns {Date} returns.lastConnectedAt - Timestamp of last successful connection
420
+ * @returns {Date} returns.lastDisconnectedAt - Timestamp of last disconnection
421
+ * @returns {Error} returns.lastError - Last error that occurred
422
+ *
423
+ * @example
424
+ * ```typescript
425
+ * const state = sdk.getConnectionState();
426
+ * console.log(`Connected: ${state.connected}`);
427
+ * console.log(`Authenticated: ${state.authenticated}`);
428
+ * if (state.reconnecting) {
429
+ * console.log(`Reconnection attempts: ${state.reconnectAttempts}`);
430
+ * }
431
+ * ```
432
+ */
433
+ getConnectionState(): {
434
+ connected: boolean;
435
+ authenticated: boolean;
436
+ reconnecting: boolean;
437
+ reconnectAttempts: number;
438
+ lastError?: Error | undefined;
439
+ lastConnectedAt?: Date | undefined;
440
+ lastDisconnectedAt?: Date | undefined;
441
+ };
442
+ /**
443
+ * Gets the current authentication state including wallet address, rooms, and permissions.
444
+ * Updated after successful authentication and includes user profile information.
445
+ *
446
+ * @returns Object containing detailed authentication state information
447
+ * @returns {boolean} returns.authenticated - Whether authentication is complete
448
+ * @returns {string} returns.walletAddress - Authenticated wallet address
449
+ * @returns {string} returns.challenge - Authentication challenge string
450
+ * @returns {string[]} returns.rooms - Array of room IDs the user has access to
451
+ * @returns {Room[]} returns.roomObjects - Full room objects with details
452
+ *
453
+ * @example
454
+ * ```typescript
455
+ * const authState = sdk.getAuthState();
456
+ * if (authState.authenticated) {
457
+ * console.log(`Authenticated as: ${authState.walletAddress}`);
458
+ * console.log(`Access to ${authState.rooms?.length ?? 0} rooms`);
459
+ * } else {
460
+ * console.log('Not authenticated');
461
+ * }
462
+ * ```
463
+ */
464
+ getAuthState(): {
465
+ authenticated: boolean;
466
+ challenge?: string | undefined;
467
+ rooms?: string[] | undefined;
468
+ walletAddress?: string | undefined;
469
+ clientId?: string | undefined;
470
+ isWhitelisted?: boolean | undefined;
471
+ isAdmin?: boolean | undefined;
472
+ nftVerified?: boolean | undefined;
473
+ roomObjects?: {
474
+ name: string;
475
+ id: string;
476
+ is_public: boolean;
477
+ is_active: boolean;
478
+ created_by: string;
479
+ created_at: string;
480
+ updated_at: string;
481
+ description?: string | undefined;
482
+ }[] | undefined;
483
+ privateRoomId?: string | undefined;
484
+ challengeTimestamp?: number | undefined;
485
+ };
486
+ /**
487
+ * Quick check for whether the WebSocket connection is currently active.
488
+ * This is a convenience getter that returns only the connection status.
489
+ * For detailed state information, use getConnectionState().
490
+ *
491
+ * @returns True if connected to the Teneo network, false otherwise
492
+ *
493
+ * @example
494
+ * ```typescript
495
+ * if (sdk.isConnected) {
496
+ * await sdk.sendMessage('Hello!');
497
+ * } else {
498
+ * console.log('Not connected');
499
+ * await sdk.connect();
500
+ * }
501
+ * ```
502
+ */
503
+ get isConnected(): boolean;
504
+ /**
505
+ * Quick check for whether authentication is complete.
506
+ * This is a convenience getter that returns only the authentication status.
507
+ * For detailed auth information, use getAuthState().
508
+ *
509
+ * @returns True if authenticated with the Teneo network, false otherwise
510
+ *
511
+ * @example
512
+ * ```typescript
513
+ * if (sdk.isAuthenticated) {
514
+ * console.log('Ready to send messages');
515
+ * } else {
516
+ * console.log('Waiting for authentication...');
517
+ * }
518
+ * ```
519
+ */
520
+ get isAuthenticated(): boolean;
521
+ /**
522
+ * Configures how agent responses are formatted when received.
523
+ * Supports raw JSON, humanized text, or both formats simultaneously.
524
+ * Also controls metadata inclusion and pretty-printing options.
525
+ *
526
+ * @param options - Response formatting configuration options
527
+ * @param options.format - Format type: 'raw' (JSON), 'humanized' (text), or 'both'
528
+ * @param options.includeMetadata - Whether to include metadata in responses (timestamps, agent info, etc.)
529
+ * @param options.includeTimestamps - Whether to include timestamps in formatted output
530
+ * @param options.prettyPrint - Whether to pretty-print JSON output
531
+ *
532
+ * @example
533
+ * ```typescript
534
+ * // Get both raw JSON and humanized text
535
+ * sdk.setResponseFormat({
536
+ * format: 'both',
537
+ * includeMetadata: true
538
+ * });
539
+ *
540
+ * const response = await sdk.sendMessage('Hello', { waitForResponse: true });
541
+ * console.log(response.humanized); // Human-readable text
542
+ * console.log(response.raw); // Original JSON
543
+ * console.log(response.metadata); // Timestamp, agent info, etc.
544
+ * ```
545
+ */
546
+ setResponseFormat(options: ResponseFormatOptions): void;
547
+ /**
548
+ * Gets the current status of the webhook system including configuration,
549
+ * queue status, and pending/failed webhook deliveries.
550
+ *
551
+ * @returns Object containing webhook status information
552
+ * @returns {boolean} returns.configured - Whether a webhook URL is configured
553
+ * @returns {WebhookConfig} returns.config - Current webhook configuration (URL, headers, retries, etc.)
554
+ * @returns {Object} returns.queue - Webhook delivery queue status
555
+ * @returns {number} returns.queue.pending - Number of webhooks pending delivery
556
+ * @returns {boolean} returns.queue.processing - Whether webhooks are currently being processed
557
+ * @returns {number} returns.queue.failed - Number of failed webhook deliveries in queue
558
+ *
559
+ * @example
560
+ * ```typescript
561
+ * const status = sdk.getWebhookStatus();
562
+ * if (status.configured) {
563
+ * console.log(`Webhook URL: ${status.config.url}`);
564
+ * console.log(`Pending: ${status.queue.pending}`);
565
+ * console.log(`Failed: ${status.queue.failed}`);
566
+ * } else {
567
+ * console.log('Webhook not configured');
568
+ * }
569
+ * ```
570
+ */
571
+ getWebhookStatus(): {
572
+ configured: boolean;
573
+ config: {
574
+ url: string;
575
+ headers?: Record<string, string> | undefined;
576
+ retries?: number | undefined;
577
+ timeout?: number | undefined;
578
+ events?: ("message" | "task" | "task_response" | "agent_selected" | "error" | "connection_state" | "auth_state")[] | undefined;
579
+ } | undefined;
580
+ queue: {
581
+ pending: number;
582
+ processing: boolean;
583
+ failed: number;
584
+ circuitState: string;
585
+ };
586
+ };
587
+ /**
588
+ * Retries all failed webhook deliveries in the queue.
589
+ * Resets attempt counters and immediately attempts to deliver all failed webhooks.
590
+ * Useful for recovering from temporary network issues or webhook endpoint downtime.
591
+ *
592
+ * @example
593
+ * ```typescript
594
+ * const status = sdk.getWebhookStatus();
595
+ * if (status.queue.failed > 0) {
596
+ * console.log(`Retrying ${status.queue.failed} failed webhooks...`);
597
+ * sdk.retryFailedWebhooks();
598
+ * }
599
+ * ```
600
+ */
601
+ retryFailedWebhooks(): void;
602
+ /**
603
+ * Clears all pending and failed webhooks from the delivery queue.
604
+ * Use this to discard webhooks that are no longer relevant or to recover from queue issues.
605
+ * Warning: This will permanently discard all queued webhook events.
606
+ *
607
+ * @example
608
+ * ```typescript
609
+ * // Clear stale webhooks after reconfiguration
610
+ * sdk.clearWebhookQueue();
611
+ * sdk.configureWebhook('https://api.example.com/new-endpoint');
612
+ * console.log('Webhook queue cleared and reconfigured');
613
+ * ```
614
+ */
615
+ clearWebhookQueue(): void;
616
+ /**
617
+ * Gets comprehensive health status of all SDK components.
618
+ * Useful for monitoring, debugging, and operational dashboards.
619
+ * Returns status of connection, webhooks, rate limiting, agents, and rooms.
620
+ *
621
+ * Overall health status calculation:
622
+ * - healthy: All components operational
623
+ * - degraded: Some components have issues but SDK is functional (e.g., webhook failures, circuit open)
624
+ * - unhealthy: Critical components are not operational (e.g., disconnected, authentication failed)
625
+ *
626
+ * @returns Complete health status object with all component states
627
+ * @returns {string} returns.status - Overall health: 'healthy', 'degraded', or 'unhealthy'
628
+ * @returns {string} returns.timestamp - ISO timestamp of health check
629
+ * @returns {Object} returns.connection - WebSocket connection health
630
+ * @returns {Object} returns.webhook - Webhook delivery health including circuit breaker state
631
+ * @returns {Object} returns.rateLimit - Rate limiter status (if configured)
632
+ * @returns {Object} returns.agents - Agent registry health
633
+ * @returns {Object} returns.rooms - Room management health
634
+ *
635
+ * @example
636
+ * ```typescript
637
+ * const health = sdk.getHealth();
638
+ * console.log(`SDK Status: ${health.status}`);
639
+ * console.log(`Connected: ${health.connection.status}`);
640
+ * console.log(`Agents: ${health.agents.count}`);
641
+ * console.log(`Webhook Circuit: ${health.webhook.circuitState}`);
642
+ *
643
+ * if (health.status !== 'healthy') {
644
+ * console.warn('SDK is degraded or unhealthy');
645
+ * if (!health.connection.authenticated) {
646
+ * console.log('Authentication issue');
647
+ * }
648
+ * if (health.webhook.failed > 0) {
649
+ * console.log(`${health.webhook.failed} failed webhooks`);
650
+ * }
651
+ * }
652
+ * ```
653
+ */
654
+ getHealth(): HealthStatus;
655
+ /**
656
+ * Destroys the SDK instance and cleans up all resources.
657
+ * Disconnects from the network, clears all managers, removes event listeners,
658
+ * and marks the SDK as destroyed. After calling destroy(), the SDK instance
659
+ * cannot be reused - create a new instance instead.
660
+ * Emits 'destroy' event before completion.
661
+ *
662
+ * @example
663
+ * ```typescript
664
+ * // Clean up when shutting down
665
+ * sdk.destroy();
666
+ * console.log('SDK destroyed and resources cleaned up');
667
+ *
668
+ * // Create new instance if needed
669
+ * const newSdk = new TeneoSDK(config);
670
+ * ```
671
+ */
672
+ destroy(): void;
673
+ /**
674
+ * Set up event forwarding from managers
675
+ */
676
+ private setupEventForwarding;
677
+ /**
678
+ * Create default logger using pino
679
+ */
680
+ private createDefaultLogger;
681
+ /**
682
+ * Creates a new SDK configuration builder for fluent configuration.
683
+ * The builder pattern provides a more intuitive way to configure the SDK
684
+ * with method chaining and validation at each step.
685
+ *
686
+ * @returns A new SDKConfigBuilder instance for fluent configuration
687
+ *
688
+ * @example
689
+ * ```typescript
690
+ * const sdk = TeneoSDK.builder()
691
+ * .wsUrl('wss://teneo.example.com')
692
+ * .privateKey('0x...')
693
+ * .withAutoJoinRooms(['general'])
694
+ * .logLevel('debug')
695
+ * .webhookUrl('https://api.example.com/webhooks')
696
+ * .build();
697
+ *
698
+ * await sdk.connect();
699
+ * ```
700
+ */
701
+ static builder(): SDKConfigBuilder;
702
+ }
703
+ //# sourceMappingURL=teneo-sdk.d.ts.map