@rainfall-devkit/sdk 0.1.8 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +51 -0
  2. package/dist/chunk-7MRE4ZVI.mjs +662 -0
  3. package/dist/chunk-AQFC7YAX.mjs +27 -0
  4. package/dist/chunk-EI7SJH5K.mjs +85 -0
  5. package/dist/chunk-NTTAVKRT.mjs +89 -0
  6. package/dist/chunk-RVKW5KBT.mjs +269 -0
  7. package/dist/chunk-V5QWJVLC.mjs +662 -0
  8. package/dist/chunk-VDPKDC3R.mjs +869 -0
  9. package/dist/chunk-WOITG5TG.mjs +84 -0
  10. package/dist/chunk-XAHJQRBJ.mjs +269 -0
  11. package/dist/chunk-XEQ6U3JQ.mjs +269 -0
  12. package/dist/cli/index.js +3797 -632
  13. package/dist/cli/index.mjs +453 -36
  14. package/dist/config-7UT7GYSN.mjs +16 -0
  15. package/dist/config-DDTQQBN7.mjs +14 -0
  16. package/dist/config-MD45VGWD.mjs +14 -0
  17. package/dist/config-ZKNHII2A.mjs +8 -0
  18. package/dist/daemon/index.d.mts +168 -0
  19. package/dist/daemon/index.d.ts +168 -0
  20. package/dist/daemon/index.js +3182 -0
  21. package/dist/daemon/index.mjs +1548 -0
  22. package/dist/errors-BMPseAnM.d.mts +47 -0
  23. package/dist/errors-BMPseAnM.d.ts +47 -0
  24. package/dist/errors-CZdRoYyw.d.ts +332 -0
  25. package/dist/errors-Chjq1Mev.d.mts +332 -0
  26. package/dist/index.d.mts +249 -2
  27. package/dist/index.d.ts +249 -2
  28. package/dist/index.js +1247 -3
  29. package/dist/index.mjs +227 -2
  30. package/dist/listeners-B5Vy9Ao5.d.ts +372 -0
  31. package/dist/listeners-BbYIaNCs.d.mts +372 -0
  32. package/dist/listeners-CP2A9J_2.d.ts +372 -0
  33. package/dist/listeners-CTRSofnm.d.mts +372 -0
  34. package/dist/listeners-CYI-YwIF.d.mts +372 -0
  35. package/dist/listeners-DRwITBW_.d.mts +372 -0
  36. package/dist/listeners-DrMrvFT5.d.ts +372 -0
  37. package/dist/listeners-MNAnpZj-.d.mts +372 -0
  38. package/dist/listeners-PZI7iT85.d.ts +372 -0
  39. package/dist/listeners-QJeEtLbV.d.ts +372 -0
  40. package/dist/listeners-hp0Ib2Ox.d.ts +372 -0
  41. package/dist/listeners-jLwetUnx.d.mts +372 -0
  42. package/dist/mcp.d.mts +7 -2
  43. package/dist/mcp.d.ts +7 -2
  44. package/dist/mcp.js +92 -1
  45. package/dist/mcp.mjs +1 -1
  46. package/dist/sdk-4OvXPr8E.d.mts +1054 -0
  47. package/dist/sdk-4OvXPr8E.d.ts +1054 -0
  48. package/dist/sdk-CJ9g5lFo.d.mts +772 -0
  49. package/dist/sdk-CJ9g5lFo.d.ts +772 -0
  50. package/dist/sdk-CN1ezZrI.d.mts +1054 -0
  51. package/dist/sdk-CN1ezZrI.d.ts +1054 -0
  52. package/dist/sdk-DD1OeGRJ.d.mts +871 -0
  53. package/dist/sdk-DD1OeGRJ.d.ts +871 -0
  54. package/dist/sdk-Xw0BjsLd.d.mts +1054 -0
  55. package/dist/sdk-Xw0BjsLd.d.ts +1054 -0
  56. package/dist/types-GnRAfH-h.d.mts +489 -0
  57. package/dist/types-GnRAfH-h.d.ts +489 -0
  58. package/package.json +17 -5
@@ -0,0 +1,332 @@
1
+ import { R as RainfallConfig, d as RateLimitInfo, e as RequestOptions, T as ToolSchema, I as Integrations, M as Memory, c as Articles, W as Web, A as AI, D as Data, U as Utils } from './types-GnRAfH-h.mjs';
2
+
3
+ /**
4
+ * Core HTTP client for Rainfall SDK
5
+ */
6
+
7
+ declare class RainfallClient {
8
+ private readonly apiKey;
9
+ private readonly baseUrl;
10
+ private readonly defaultTimeout;
11
+ private readonly defaultRetries;
12
+ private readonly defaultRetryDelay;
13
+ private lastRateLimitInfo?;
14
+ private subscriberId?;
15
+ constructor(config: RainfallConfig);
16
+ /**
17
+ * Get the last rate limit info from the API
18
+ */
19
+ getRateLimitInfo(): RateLimitInfo | undefined;
20
+ /**
21
+ * Make an authenticated request to the Rainfall API
22
+ */
23
+ request<T = unknown>(path: string, options?: {
24
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
25
+ body?: unknown;
26
+ headers?: Record<string, string>;
27
+ }, requestOptions?: RequestOptions): Promise<T>;
28
+ /**
29
+ * Execute a tool/node by ID
30
+ */
31
+ executeTool<T = unknown>(toolId: string, params?: Record<string, unknown>, options?: RequestOptions): Promise<T>;
32
+ /**
33
+ * List all available tools
34
+ */
35
+ listTools(): Promise<Array<{
36
+ id: string;
37
+ name: string;
38
+ description: string;
39
+ category: string;
40
+ }>>;
41
+ /**
42
+ * Get tool schema/parameters
43
+ */
44
+ getToolSchema(toolId: string): Promise<ToolSchema>;
45
+ /**
46
+ * Get subscriber info
47
+ */
48
+ getMe(): Promise<{
49
+ id: string;
50
+ name: string;
51
+ email?: string;
52
+ plan?: string;
53
+ billingStatus?: string;
54
+ usage: {
55
+ callsThisMonth: number;
56
+ callsLimit: number;
57
+ };
58
+ }>;
59
+ /**
60
+ * Ensure we have a subscriber ID, fetching it if necessary
61
+ */
62
+ private ensureSubscriberId;
63
+ private sleep;
64
+ }
65
+
66
+ /**
67
+ * Integrations namespace for Rainfall SDK
68
+ * GitHub, Notion, Linear, Slack, Figma, Stripe
69
+ */
70
+
71
+ declare class IntegrationsNamespace {
72
+ private client;
73
+ constructor(client: RainfallClient);
74
+ get github(): Integrations.GitHub;
75
+ get notion(): Integrations.Notion;
76
+ get linear(): Integrations.Linear;
77
+ get slack(): Integrations.Slack;
78
+ get figma(): Integrations.Figma;
79
+ get stripe(): Integrations.Stripe;
80
+ }
81
+
82
+ declare class Rainfall {
83
+ private readonly client;
84
+ private _integrations?;
85
+ private _memory?;
86
+ private _articles?;
87
+ private _web?;
88
+ private _ai?;
89
+ private _data?;
90
+ private _utils?;
91
+ constructor(config: RainfallConfig);
92
+ /**
93
+ * Integrations namespace - GitHub, Notion, Linear, Slack, Figma, Stripe
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * // GitHub
98
+ * await rainfall.integrations.github.issues.create({
99
+ * owner: 'facebook',
100
+ * repo: 'react',
101
+ * title: 'Bug report'
102
+ * });
103
+ *
104
+ * // Slack
105
+ * await rainfall.integrations.slack.messages.send({
106
+ * channelId: 'C123456',
107
+ * text: 'Hello team!'
108
+ * });
109
+ *
110
+ * // Linear
111
+ * const issues = await rainfall.integrations.linear.issues.list();
112
+ * ```
113
+ */
114
+ get integrations(): IntegrationsNamespace;
115
+ /**
116
+ * Memory namespace - Semantic memory storage and retrieval
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * // Store a memory
121
+ * await rainfall.memory.create({
122
+ * content: 'User prefers dark mode',
123
+ * keywords: ['preference', 'ui']
124
+ * });
125
+ *
126
+ * // Recall similar memories
127
+ * const memories = await rainfall.memory.recall({
128
+ * query: 'user preferences',
129
+ * topK: 5
130
+ * });
131
+ * ```
132
+ */
133
+ get memory(): Memory.MemoryClient;
134
+ /**
135
+ * Articles namespace - News aggregation and article management
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * // Search news
140
+ * const articles = await rainfall.articles.search({
141
+ * query: 'artificial intelligence'
142
+ * });
143
+ *
144
+ * // Create from URL
145
+ * const article = await rainfall.articles.createFromUrl({
146
+ * url: 'https://example.com/article'
147
+ * });
148
+ *
149
+ * // Summarize
150
+ * const summary = await rainfall.articles.summarize({
151
+ * text: article.content
152
+ * });
153
+ * ```
154
+ */
155
+ get articles(): Articles.ArticlesClient;
156
+ /**
157
+ * Web namespace - Web search, scraping, and content extraction
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * // Search with Exa
162
+ * const results = await rainfall.web.search.exa({
163
+ * query: 'latest AI research'
164
+ * });
165
+ *
166
+ * // Fetch and convert
167
+ * const html = await rainfall.web.fetch({ url: 'https://example.com' });
168
+ * const markdown = await rainfall.web.htmlToMarkdown({ html });
169
+ *
170
+ * // Extract specific elements
171
+ * const links = await rainfall.web.extractHtml({
172
+ * html,
173
+ * selector: 'a[href]'
174
+ * });
175
+ * ```
176
+ */
177
+ get web(): Web.WebClient;
178
+ /**
179
+ * AI namespace - Embeddings, image generation, OCR, vision, chat
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * // Generate embeddings
184
+ * const embedding = await rainfall.ai.embeddings.document({
185
+ * text: 'Hello world'
186
+ * });
187
+ *
188
+ * // Generate image
189
+ * const image = await rainfall.ai.image.generate({
190
+ * prompt: 'A serene mountain landscape'
191
+ * });
192
+ *
193
+ * // OCR
194
+ * const text = await rainfall.ai.ocr({ imageBase64: '...' });
195
+ *
196
+ * // Chat
197
+ * const response = await rainfall.ai.chat({
198
+ * messages: [{ role: 'user', content: 'Hello!' }]
199
+ * });
200
+ * ```
201
+ */
202
+ get ai(): AI.AIClient;
203
+ /**
204
+ * Data namespace - CSV processing, scripts, similarity search
205
+ *
206
+ * @example
207
+ * ```typescript
208
+ * // Query CSV with SQL
209
+ * const results = await rainfall.data.csv.query({
210
+ * sql: 'SELECT * FROM data WHERE value > 100'
211
+ * });
212
+ *
213
+ * // Execute saved script
214
+ * const result = await rainfall.data.scripts.execute({
215
+ * name: 'my-script',
216
+ * params: { input: 'data' }
217
+ * });
218
+ * ```
219
+ */
220
+ get data(): Data.DataClient;
221
+ /**
222
+ * Utils namespace - Mermaid diagrams, document conversion, regex, JSON extraction
223
+ *
224
+ * @example
225
+ * ```typescript
226
+ * // Generate diagram
227
+ * const diagram = await rainfall.utils.mermaid({
228
+ * diagram: 'graph TD; A-->B;'
229
+ * });
230
+ *
231
+ * // Convert document
232
+ * const pdf = await rainfall.utils.documentConvert({
233
+ * document: markdownContent,
234
+ * mimeType: 'text/markdown',
235
+ * format: 'pdf'
236
+ * });
237
+ *
238
+ * // Extract JSON from text
239
+ * const json = await rainfall.utils.jsonExtract({
240
+ * text: 'Here is some data: {"key": "value"}'
241
+ * });
242
+ * ```
243
+ */
244
+ get utils(): Utils.UtilsClient;
245
+ /**
246
+ * Get the underlying HTTP client for advanced usage
247
+ */
248
+ getClient(): RainfallClient;
249
+ /**
250
+ * List all available tools
251
+ */
252
+ listTools(): Promise<{
253
+ id: string;
254
+ name: string;
255
+ description: string;
256
+ category: string;
257
+ }[]>;
258
+ /**
259
+ * Get schema for a specific tool
260
+ */
261
+ getToolSchema(toolId: string): Promise<ToolSchema>;
262
+ /**
263
+ * Execute any tool by ID (low-level access)
264
+ */
265
+ executeTool<T = unknown>(toolId: string, params?: Record<string, unknown>): Promise<T>;
266
+ /**
267
+ * Get current subscriber info and usage
268
+ */
269
+ getMe(): Promise<{
270
+ id: string;
271
+ name: string;
272
+ email?: string;
273
+ plan?: string;
274
+ billingStatus?: string;
275
+ usage: {
276
+ callsThisMonth: number;
277
+ callsLimit: number;
278
+ };
279
+ }>;
280
+ /**
281
+ * Get current rate limit info
282
+ */
283
+ getRateLimitInfo(): RateLimitInfo | undefined;
284
+ }
285
+
286
+ /**
287
+ * Error classes for Rainfall SDK
288
+ */
289
+ declare class RainfallError extends Error {
290
+ readonly code: string;
291
+ readonly statusCode?: number | undefined;
292
+ readonly details?: Record<string, unknown> | undefined;
293
+ constructor(message: string, code: string, statusCode?: number | undefined, details?: Record<string, unknown> | undefined);
294
+ toJSON(): {
295
+ name: string;
296
+ code: string;
297
+ message: string;
298
+ statusCode: number | undefined;
299
+ details: Record<string, unknown> | undefined;
300
+ };
301
+ }
302
+ declare class AuthenticationError extends RainfallError {
303
+ constructor(message?: string, details?: Record<string, unknown>);
304
+ }
305
+ declare class RateLimitError extends RainfallError {
306
+ readonly retryAfter: number;
307
+ readonly limit: number;
308
+ readonly remaining: number;
309
+ readonly resetAt: Date;
310
+ constructor(message?: string, retryAfter?: number, limit?: number, remaining?: number, resetAt?: Date);
311
+ }
312
+ declare class ValidationError extends RainfallError {
313
+ constructor(message: string, details?: Record<string, unknown>);
314
+ }
315
+ declare class NotFoundError extends RainfallError {
316
+ constructor(resource: string, identifier?: string);
317
+ }
318
+ declare class ServerError extends RainfallError {
319
+ constructor(message?: string, statusCode?: number);
320
+ }
321
+ declare class TimeoutError extends RainfallError {
322
+ constructor(timeoutMs: number);
323
+ }
324
+ declare class NetworkError extends RainfallError {
325
+ constructor(message?: string, details?: Record<string, unknown>);
326
+ }
327
+ declare class ToolNotFoundError extends RainfallError {
328
+ constructor(toolId: string);
329
+ }
330
+ declare function parseErrorResponse(response: Response, data: unknown): RainfallError;
331
+
332
+ export { AuthenticationError as A, NetworkError as N, Rainfall as R, ServerError as S, TimeoutError as T, ValidationError as V, NotFoundError as a, RainfallClient as b, RainfallError as c, RateLimitError as d, ToolNotFoundError as e, parseErrorResponse as p };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,251 @@
1
- export { A as AI, a as ApiError, b as ApiResponse, c as Articles, d as AuthenticationError, D as Data, I as Integrations, M as Memory, N as NetworkError, e as NotFoundError, R as Rainfall, f as RainfallClient, g as RainfallConfig, h as RainfallError, i as RateLimitError, j as RateLimitInfo, k as RequestOptions, S as ServerError, T as TimeoutError, l as ToolNotFoundError, m as ToolSchema, U as Utils, V as ValidationError, W as Web } from './errors-COkXMRZk.mjs';
1
+ import { l as RainfallClient } from './sdk-4OvXPr8E.mjs';
2
+ export { A as AI, b as ApiError, c as ApiResponse, d as Articles, D as Data, I as Integrations, M as Memory, a as Rainfall, R as RainfallConfig, e as RateLimitInfo, f as RequestOptions, T as ToolSchema, U as Utils, W as Web } from './sdk-4OvXPr8E.mjs';
3
+ export { A as AuthenticationError, N as NetworkError, a as NotFoundError, R as RainfallError, b as RateLimitError, S as ServerError, T as TimeoutError, c as ToolNotFoundError, V as ValidationError } from './errors-BMPseAnM.mjs';
4
+ export { C as ContextOptions, c as CronTriggerConfig, E as EdgeNodeRegistration, F as FileWatcherConfig, L as ListenerEvent, d as ListenerRegistry, M as MemoryEntry, N as NetworkedExecutorOptions, e as NodeCapabilities, Q as QueuedJob, a as RainfallDaemonContext, b as RainfallListenerRegistry, R as RainfallNetworkedExecutor, S as SessionContext, T as ToolExecutionRecord, f as createCronWorkflow, g as createFileWatcherWorkflow } from './listeners-MNAnpZj-.mjs';
5
+ import 'ws';
6
+ import '@modelcontextprotocol/sdk/client/index.js';
7
+ import '@modelcontextprotocol/sdk/client/stdio.js';
8
+ import '@modelcontextprotocol/sdk/client/streamableHttp.js';
9
+
10
+ /**
11
+ * Edge Node Security Module
12
+ *
13
+ * Provides:
14
+ * - JWT token generation/validation for edge node authentication
15
+ * - ACL enforcement for job routing (same-subscriber only)
16
+ * - Libsodium-based encryption for job parameters
17
+ * - Key pair generation for edge nodes
18
+ */
19
+ interface EdgeNodeJWT {
20
+ sub: string;
21
+ iss: string;
22
+ iat: number;
23
+ exp: number;
24
+ jti: string;
25
+ scope: string[];
26
+ }
27
+ interface JWTPayload {
28
+ edgeNodeId: string;
29
+ subscriberId: string;
30
+ scopes: string[];
31
+ expiresAt: number;
32
+ }
33
+ interface ACLCheck {
34
+ edgeNodeId: string;
35
+ subscriberId: string;
36
+ jobSubscriberId: string;
37
+ action: 'claim' | 'submit' | 'queue' | 'heartbeat';
38
+ }
39
+ interface ACLResult {
40
+ allowed: boolean;
41
+ reason?: string;
42
+ }
43
+ interface EncryptedPayload {
44
+ ciphertext: string;
45
+ nonce: string;
46
+ ephemeralPublicKey: string;
47
+ }
48
+ interface KeyPair {
49
+ publicKey: string;
50
+ privateKey: string;
51
+ }
52
+ /**
53
+ * Edge Node Security Manager
54
+ */
55
+ declare class EdgeNodeSecurity {
56
+ private sodiumReady;
57
+ private backendSecret?;
58
+ private keyPair?;
59
+ constructor(options?: {
60
+ backendSecret?: string;
61
+ keyPair?: KeyPair;
62
+ });
63
+ /**
64
+ * Initialize libsodium
65
+ */
66
+ initialize(): Promise<void>;
67
+ /**
68
+ * Generate a JWT token for an edge node
69
+ * Note: In production, this is done by the backend. This is for testing.
70
+ */
71
+ generateJWT(edgeNodeId: string, subscriberId: string, expiresInDays?: number): string;
72
+ /**
73
+ * Validate a JWT token
74
+ */
75
+ validateJWT(token: string): JWTPayload;
76
+ /**
77
+ * Extract bearer token from Authorization header
78
+ */
79
+ extractBearerToken(authHeader: string | undefined): string | null;
80
+ /**
81
+ * Check if an edge node is allowed to perform an action on a job
82
+ * Rule: Edge nodes can only access jobs for their own subscriber
83
+ */
84
+ checkACL(check: ACLCheck): ACLResult;
85
+ /**
86
+ * Middleware-style ACL check for job operations
87
+ */
88
+ requireSameSubscriber(edgeNodeSubscriberId: string, jobSubscriberId: string, operation: string): void;
89
+ /**
90
+ * Generate a new Ed25519 key pair for an edge node
91
+ */
92
+ generateKeyPair(): Promise<KeyPair>;
93
+ /**
94
+ * Encrypt job parameters for a target edge node using its public key
95
+ */
96
+ encryptForEdgeNode(plaintext: string, targetPublicKeyBase64: string): Promise<EncryptedPayload>;
97
+ /**
98
+ * Decrypt job parameters received from the backend
99
+ */
100
+ decryptFromBackend(encrypted: EncryptedPayload): Promise<string>;
101
+ /**
102
+ * Encrypt job parameters for local storage (using secretbox)
103
+ */
104
+ encryptLocal(plaintext: string, key: string): Promise<{
105
+ ciphertext: string;
106
+ nonce: string;
107
+ }>;
108
+ /**
109
+ * Decrypt locally stored job parameters
110
+ */
111
+ decryptLocal(encrypted: {
112
+ ciphertext: string;
113
+ nonce: string;
114
+ }, key: string): Promise<string>;
115
+ private generateTokenId;
116
+ private base64UrlEncode;
117
+ private base64UrlDecode;
118
+ private hmacSha256;
119
+ private timingSafeEqual;
120
+ private bytesToBase64;
121
+ private base64ToBytes;
122
+ private deriveKey;
123
+ }
124
+ /**
125
+ * Create security manager from environment or config
126
+ */
127
+ declare function createEdgeNodeSecurity(options?: {
128
+ backendSecret?: string;
129
+ keyPair?: KeyPair;
130
+ }): Promise<EdgeNodeSecurity>;
131
+
132
+ /**
133
+ * Secure Edge Node Client
134
+ *
135
+ * Handles secure communication with the Rainfall backend:
136
+ * - JWT authentication on all requests
137
+ * - ACL validation
138
+ * - Job parameter encryption/decryption
139
+ */
140
+
141
+ interface SecureEdgeConfig {
142
+ /** Rainfall client instance */
143
+ client: RainfallClient;
144
+ /** Edge node ID from backend registration */
145
+ edgeNodeId: string;
146
+ /** JWT secret from backend */
147
+ edgeNodeSecret: string;
148
+ /** Path to key directory (contains edge-node.pub and edge-node.key) */
149
+ keysPath: string;
150
+ /** Backend secret for JWT validation (optional, for testing) */
151
+ backendSecret?: string;
152
+ }
153
+ interface SecureJob {
154
+ id: string;
155
+ subscriberId: string;
156
+ type: string;
157
+ params?: string;
158
+ encrypted?: boolean;
159
+ }
160
+ interface JobResult {
161
+ jobId: string;
162
+ success: boolean;
163
+ output?: string;
164
+ error?: string;
165
+ }
166
+ /**
167
+ * Secure Edge Node Client
168
+ *
169
+ * Wraps the Rainfall Client with security features for edge node operation.
170
+ */
171
+ declare class SecureEdgeClient {
172
+ private client;
173
+ private security;
174
+ private edgeNodeId;
175
+ private edgeNodeSecret;
176
+ private keysPath;
177
+ private jwtPayload?;
178
+ private keyPair?;
179
+ constructor(config: SecureEdgeConfig);
180
+ /**
181
+ * Initialize the secure client
182
+ */
183
+ initialize(): Promise<void>;
184
+ /**
185
+ * Load key pair from disk
186
+ */
187
+ private loadKeyPair;
188
+ /**
189
+ * Get public key for sharing with backend
190
+ */
191
+ getPublicKey(): string;
192
+ /**
193
+ * Send heartbeat with authentication
194
+ */
195
+ heartbeat(): Promise<{
196
+ status: string;
197
+ timestamp: number;
198
+ }>;
199
+ /**
200
+ * Claim a job from the queue
201
+ */
202
+ claimJob(): Promise<SecureJob | null>;
203
+ /**
204
+ * Submit job result
205
+ */
206
+ submitJobResult(result: JobResult): Promise<void>;
207
+ /**
208
+ * Queue a job for processing
209
+ */
210
+ queueJob(type: string, params: Record<string, unknown>, targetPublicKey?: string): Promise<{
211
+ jobId: string;
212
+ }>;
213
+ /**
214
+ * Decrypt job params received from backend
215
+ */
216
+ private decryptJobParams;
217
+ /**
218
+ * Encrypt job result for sending to backend
219
+ */
220
+ private encryptJobResult;
221
+ /**
222
+ * Encrypt job params for a specific target edge node
223
+ */
224
+ private encryptJobParamsForTarget;
225
+ /**
226
+ * Check if client is authenticated
227
+ */
228
+ private requireAuth;
229
+ /**
230
+ * Get current authentication status
231
+ */
232
+ getAuthStatus(): {
233
+ authenticated: boolean;
234
+ edgeNodeId?: string;
235
+ subscriberId?: string;
236
+ expiresAt?: number;
237
+ scopes?: string[];
238
+ };
239
+ }
240
+ /**
241
+ * Factory function to create secure edge client from config
242
+ */
243
+ declare function createSecureEdgeClient(client: RainfallClient, options: {
244
+ edgeNodeId: string;
245
+ edgeNodeSecret: string;
246
+ keysPath: string;
247
+ backendSecret?: string;
248
+ }): Promise<SecureEdgeClient>;
2
249
 
3
250
  /**
4
251
  * Rainfall SDK - Official SDK for Rainfall API
@@ -26,4 +273,4 @@ export { A as AI, a as ApiError, b as ApiResponse, c as Articles, d as Authentic
26
273
 
27
274
  declare const VERSION = "0.1.0";
28
275
 
29
- export { VERSION };
276
+ export { type ACLCheck, type ACLResult, type EdgeNodeJWT, EdgeNodeSecurity, type EncryptedPayload, type JWTPayload, type JobResult, type KeyPair, RainfallClient, SecureEdgeClient, type SecureEdgeConfig, type SecureJob, VERSION, createEdgeNodeSecurity, createSecureEdgeClient };