@sentinelysolana/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.
@@ -0,0 +1,529 @@
1
+ "use strict";
2
+ /**
3
+ * ============ VAULTCLIENT: ANCHOR ABSTRACTION ============
4
+ *
5
+ * Handles all NeuralVault operations without requiring
6
+ * developers to understand Anchor PDAs or cryptography.
7
+ *
8
+ * Simple API:
9
+ * - vault.initializeVault()
10
+ * - vault.deposit(amountUsdc)
11
+ * - vault.setRiskLimits({ maxPositionBps })
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.VaultClient = void 0;
15
+ const web3_js_1 = require("@solana/web3.js");
16
+ const spl_token_1 = require("@solana/spl-token");
17
+ /**
18
+ * VaultClient: Institutional vault management without Anchor complexity
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const vault = new VaultClient(config);
23
+ * await vault.initializeVault({ maxPositionBps: 500 });
24
+ * await vault.deposit({ amountUsdc: 10000 });
25
+ * await vault.setRiskLimits({ maxPositionBps: 300 });
26
+ * const state = await vault.getVaultState();
27
+ * ```
28
+ */
29
+ class VaultClient {
30
+ /**
31
+ * Initialize VaultClient
32
+ *
33
+ * Supports two modes:
34
+ * 1. Backend mode: Pass keypair for server-side signing
35
+ * 2. Frontend mode: Pass signTransaction + publicKey for wallet adapter (non-custodial)
36
+ *
37
+ * @param config - SDK configuration
38
+ */
39
+ constructor(config) {
40
+ /** USDC Devnet mint */
41
+ this.USDC_MINT = new web3_js_1.PublicKey('EPjFWdd5Au17y2edWjNx5mKnvUcghLgMLKXZKL7xS1d');
42
+ this.connection = new web3_js_1.Connection(config.rpcUrl, config.commitment || 'confirmed');
43
+ // Determine signing mode
44
+ if (config.keypair) {
45
+ // Backend mode: keypair-based signing
46
+ this.keypair = web3_js_1.Keypair.fromSecretKey(config.keypair.secretKey);
47
+ this.userPublicKey = this.keypair.publicKey;
48
+ }
49
+ else if (config.signTransaction && config.publicKey) {
50
+ // Frontend mode: wallet adapter signing (non-custodial)
51
+ this.signTransaction = config.signTransaction;
52
+ this.userPublicKey = new web3_js_1.PublicKey(config.publicKey);
53
+ }
54
+ else {
55
+ throw new Error('VaultClient requires either (keypair) or (signTransaction + publicKey)');
56
+ }
57
+ this.programId = new web3_js_1.PublicKey(config.programId || 'A7FnyNVtkcRMEkhaBjgtKZ1Z7Mh4N9XLBN8AGneXNK2F');
58
+ }
59
+ /**
60
+ * Initialize a new NeuralVault PDA
61
+ *
62
+ * Abstracts away:
63
+ * - PDA derivation
64
+ * - Associated token account creation
65
+ * - Anchor instruction building
66
+ * - Rent funding
67
+ *
68
+ * @param params - Vault initialization parameters
69
+ * @returns Vault public key and transaction hash
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const response = await vault.initializeVault({
74
+ * maxPositionBps: 500, // 5% max position
75
+ * riskLevel: 60,
76
+ * });
77
+ * console.log('Vault created:', response.vaultPubkey);
78
+ * ```
79
+ */
80
+ async initializeVault(params) {
81
+ try {
82
+ this.log('Initializing vault with params:', params);
83
+ // Step 1: Derive vault PDA (seed: "vault" + user pubkey + vault_id)
84
+ const vaultId = BigInt(Date.now()); // Use timestamp as vault_id for uniqueness
85
+ const [vaultPda, bump] = await web3_js_1.PublicKey.findProgramAddress([Buffer.from('vault'), this.userPublicKey.toBuffer(), Buffer.from(vaultId.toString())], this.programId);
86
+ this.log(`Vault PDA: ${vaultPda.toString()}`);
87
+ // Step 2: Derive vault token account (ATA)
88
+ const vaultTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(this.USDC_MINT, vaultPda, true // allowOwnerOffCurve
89
+ );
90
+ // Step 3: Get user's USDC token account
91
+ const userTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(this.USDC_MINT, this.userPublicKey);
92
+ // Step 4: Build initialize_vault instruction
93
+ const transaction = new web3_js_1.Transaction();
94
+ // Build the instruction data for initialize_vault
95
+ // Args: vault_id (u64), max_position_size_bps (u16), risk_level (u8), usdc_mint (Pubkey)
96
+ const instructionData = this.buildInitializeVaultIx(vaultId, params.maxPositionBps, params.riskLevel || 50, this.USDC_MINT);
97
+ const initVaultIx = new web3_js_1.TransactionInstruction({
98
+ programId: this.programId,
99
+ keys: [
100
+ { pubkey: vaultPda, isSigner: false, isWritable: true },
101
+ { pubkey: vaultTokenAccount, isSigner: false, isWritable: true },
102
+ { pubkey: userTokenAccount, isSigner: false, isWritable: false },
103
+ { pubkey: this.USDC_MINT, isSigner: false, isWritable: false },
104
+ { pubkey: this.userPublicKey, isSigner: true, isWritable: true },
105
+ { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
106
+ { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
107
+ { pubkey: this.getSysvarRent(), isSigner: false, isWritable: false },
108
+ ],
109
+ data: instructionData,
110
+ });
111
+ transaction.add(initVaultIx);
112
+ // Step 5: Sign and send transaction
113
+ this.log('Sending initialize_vault transaction...');
114
+ const txHash = await this.sendAndConfirmTx(transaction);
115
+ this.log(`Vault initialized: ${txHash}`);
116
+ return {
117
+ vaultPubkey: vaultPda.toString(),
118
+ vaultTokenAccount: vaultTokenAccount.toString(),
119
+ txHash,
120
+ timestamp: Date.now(),
121
+ };
122
+ }
123
+ catch (error) {
124
+ throw this.formatError('VAULT_INIT_FAILED', error);
125
+ }
126
+ }
127
+ /**
128
+ * Deposit USDC into vault
129
+ *
130
+ * Abstracts away:
131
+ * - SPL token transfer
132
+ * - Anchor instruction encoding
133
+ * - Transaction signing
134
+ *
135
+ * @param params - Deposit parameters (amount in USDC)
136
+ * @returns Deposit confirmation and new balance
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * const response = await vault.deposit({ amountUsdc: 5000 });
141
+ * console.log('Deposited:', response.amountUsdc);
142
+ * console.log('New balance:', response.newBalanceUsdc);
143
+ * ```
144
+ */
145
+ async deposit(params) {
146
+ try {
147
+ this.log(`Depositing ${params.amountUsdc} USDC into vault`);
148
+ // Step 1: Derive vault PDA (need to know the vault_id, we'll use the first vault)
149
+ // In production, this should be passed as a parameter
150
+ const vaultId = BigInt(0); // Use vault_id 0 for first vault
151
+ const [vaultPda] = await web3_js_1.PublicKey.findProgramAddress([Buffer.from('vault'), this.userPublicKey.toBuffer(), Buffer.from(vaultId.toString())], this.programId);
152
+ // Step 2: Get user's USDC token account
153
+ const userTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(this.USDC_MINT, this.userPublicKey);
154
+ // Step 3: Get vault's token account
155
+ const vaultTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(this.USDC_MINT, vaultPda, true);
156
+ // Step 4: Convert USDC to cents (fixed-point math)
157
+ const amountCents = BigInt(Math.round(params.amountUsdc * 100));
158
+ // Step 5: Build transaction with deposit_usdc instruction
159
+ const transaction = new web3_js_1.Transaction();
160
+ // Build instruction data for deposit_usdc
161
+ // Args: amount (u64)
162
+ const discriminator = Buffer.from([
163
+ 205, 226, 44, 209, 227, 209, 24, 213, // deposit_usdc discriminator
164
+ ]);
165
+ const argsBuffer = Buffer.alloc(8);
166
+ argsBuffer.writeBigUInt64LE(amountCents, 0);
167
+ const instructionData = Buffer.concat([discriminator, argsBuffer]);
168
+ const depositIx = new web3_js_1.TransactionInstruction({
169
+ programId: this.programId,
170
+ keys: [
171
+ { pubkey: vaultPda, isSigner: false, isWritable: true },
172
+ { pubkey: vaultTokenAccount, isSigner: false, isWritable: true },
173
+ { pubkey: userTokenAccount, isSigner: false, isWritable: true },
174
+ { pubkey: this.userPublicKey, isSigner: true, isWritable: false },
175
+ { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
176
+ ],
177
+ data: instructionData,
178
+ });
179
+ transaction.add(depositIx);
180
+ // Step 6: Sign and send
181
+ this.log('Sending deposit_usdc transaction...');
182
+ const txHash = await this.sendAndConfirmTx(transaction);
183
+ this.log(`Deposit confirmed: ${txHash}`);
184
+ // Step 7: Fetch new balance
185
+ const newState = await this.getVaultState();
186
+ return {
187
+ txHash,
188
+ amountUsdc: params.amountUsdc,
189
+ newBalanceUsdc: newState.balanceCents / 100,
190
+ timestamp: Date.now(),
191
+ };
192
+ }
193
+ catch (error) {
194
+ throw this.formatError('DEPOSIT_FAILED', error);
195
+ }
196
+ }
197
+ /**
198
+ * Update vault risk parameters
199
+ *
200
+ * Allows programmatic adjustment of:
201
+ * - Max position size (in basis points)
202
+ * - Risk tolerance level
203
+ *
204
+ * Abstracts away:
205
+ * - Anchor instruction building
206
+ * - Fixed-point BPS math
207
+ * - Transaction signing
208
+ *
209
+ * @param limits - New risk limits
210
+ * @returns Confirmation and updated parameters
211
+ *
212
+ * @example
213
+ * ```typescript
214
+ * const response = await vault.setRiskLimits({
215
+ * maxPositionBps: 300, // Reduce to 3%
216
+ * riskLevel: 40,
217
+ * });
218
+ * console.log('Updated risk limit to:', response.maxPositionBps / 100, '%');
219
+ * ```
220
+ */
221
+ async setRiskLimits(limits) {
222
+ try {
223
+ this.log('Updating risk limits:', limits);
224
+ // Step 1: Validate BPS (0-10000)
225
+ if (limits.maxPositionBps < 0 || limits.maxPositionBps > 10000) {
226
+ throw new Error('maxPositionBps must be between 0 and 10000');
227
+ }
228
+ // Step 2: Validate risk level (0-100)
229
+ const riskLevel = limits.riskLevel || 50;
230
+ if (riskLevel < 0 || riskLevel > 100) {
231
+ throw new Error('riskLevel must be between 0 and 100');
232
+ }
233
+ // Step 3: Derive vault PDA
234
+ const vaultId = BigInt(0); // Use vault_id 0 (first vault)
235
+ const [vaultPda] = await web3_js_1.PublicKey.findProgramAddress([Buffer.from('vault'), this.userPublicKey.toBuffer(), Buffer.from(vaultId.toString())], this.programId);
236
+ // Step 4: Build transaction with update_risk_params instruction
237
+ const transaction = new web3_js_1.Transaction();
238
+ // Build instruction data for update_risk_params
239
+ // Args: max_position_size_bps (u16), risk_level (u8)
240
+ const discriminator = Buffer.from([
241
+ 78, 169, 142, 234, 48, 181, 181, 142, // update_risk_params discriminator
242
+ ]);
243
+ const argsBuffer = Buffer.alloc(3);
244
+ argsBuffer.writeUInt16LE(limits.maxPositionBps, 0);
245
+ argsBuffer.writeUInt8(riskLevel, 2);
246
+ const instructionData = Buffer.concat([discriminator, argsBuffer]);
247
+ const updateRiskIx = new web3_js_1.TransactionInstruction({
248
+ programId: this.programId,
249
+ keys: [
250
+ { pubkey: vaultPda, isSigner: false, isWritable: true },
251
+ { pubkey: this.userPublicKey, isSigner: true, isWritable: true },
252
+ ],
253
+ data: instructionData,
254
+ });
255
+ transaction.add(updateRiskIx);
256
+ // Step 5: Sign and send
257
+ this.log('Sending update_risk_params transaction...');
258
+ const txHash = await this.sendAndConfirmTx(transaction);
259
+ this.log(`Risk limits updated: ${txHash}`);
260
+ return {
261
+ txHash,
262
+ maxPositionBps: limits.maxPositionBps,
263
+ riskLevel,
264
+ timestamp: Date.now(),
265
+ };
266
+ }
267
+ catch (error) {
268
+ throw this.formatError('RISK_UPDATE_FAILED', error);
269
+ }
270
+ }
271
+ /**
272
+ * Fetch current vault state from chain
273
+ *
274
+ * Returns:
275
+ * - Balance
276
+ * - Risk parameters
277
+ * - Activity status
278
+ * - Fee metrics
279
+ *
280
+ * @returns Current vault state
281
+ *
282
+ * @example
283
+ * ```typescript
284
+ * const state = await vault.getVaultState();
285
+ * console.log('Balance:', state.balanceCents / 100, 'USDC');
286
+ * console.log('Max position:', state.maxPositionBps / 100, '%');
287
+ * ```
288
+ */
289
+ async getVaultState() {
290
+ try {
291
+ this.log('Fetching vault state from chain');
292
+ // Derive vault PDA
293
+ const vaultId = BigInt(0); // Use vault_id 0 (first vault)
294
+ const [vaultPda] = await web3_js_1.PublicKey.findProgramAddress([Buffer.from('vault'), this.userPublicKey.toBuffer(), Buffer.from(vaultId.toString())], this.programId);
295
+ // Fetch vault account from chain
296
+ const accountInfo = await this.connection.getAccountInfo(vaultPda);
297
+ if (!accountInfo) {
298
+ throw new Error(`Vault not found at ${vaultPda.toString()}`);
299
+ }
300
+ // Parse account data
301
+ // NeuralVault struct layout:
302
+ // bump (u8) = 1 byte
303
+ // owner (Pubkey) = 32 bytes
304
+ // vault_id (u64) = 8 bytes
305
+ // usdc_mint (Pubkey) = 32 bytes
306
+ // token_account (Pubkey) = 32 bytes
307
+ // balance (u64) = 8 bytes
308
+ // total_delegated_volume (u64) = 8 bytes
309
+ // max_position_size_bps (u16) = 2 bytes
310
+ // risk_level (u8) = 1 byte
311
+ // status (u8) = 1 byte
312
+ // created_at (i64) = 8 bytes
313
+ // last_execution (i64) = 8 bytes
314
+ // protocol_fee_earned (u64) = 8 bytes
315
+ const data = accountInfo.data;
316
+ let offset = 8; // Skip discriminator (8 bytes)
317
+ const bump = data[offset];
318
+ offset += 1;
319
+ // Skip owner (32 bytes)
320
+ offset += 32;
321
+ // Skip vault_id (8 bytes)
322
+ offset += 8;
323
+ // Skip usdc_mint (32 bytes)
324
+ offset += 32;
325
+ // Skip token_account (32 bytes)
326
+ offset += 32;
327
+ // balance (u64)
328
+ const balanceCents = Number(this.readBigUInt64LE(data, offset));
329
+ offset += 8;
330
+ // Skip total_delegated_volume (8 bytes)
331
+ offset += 8;
332
+ // max_position_size_bps (u16)
333
+ const maxPositionBps = data.readUInt16LE(offset);
334
+ offset += 2;
335
+ // risk_level (u8)
336
+ const riskLevel = data[offset];
337
+ offset += 1;
338
+ // status (u8)
339
+ const status = data[offset];
340
+ const isActive = status === 1;
341
+ offset += 1;
342
+ // Skip created_at (8 bytes)
343
+ offset += 8;
344
+ // Skip last_execution (8 bytes)
345
+ offset += 8;
346
+ // protocol_fee_earned (u64)
347
+ const totalFeesCents = Number(this.readBigUInt64LE(data, offset));
348
+ this.log('Vault state fetched successfully');
349
+ return {
350
+ pubkey: vaultPda.toString(),
351
+ balanceCents,
352
+ maxPositionBps,
353
+ riskLevel,
354
+ isActive,
355
+ totalFeesCents,
356
+ lastUpdated: Date.now(),
357
+ };
358
+ }
359
+ catch (error) {
360
+ throw this.formatError('FETCH_STATE_FAILED', error);
361
+ }
362
+ }
363
+ /**
364
+ * Withdraw USDC from vault
365
+ *
366
+ * @param amountUsdc - Amount to withdraw
367
+ * @returns Withdrawal confirmation
368
+ */
369
+ async withdraw(amountUsdc) {
370
+ try {
371
+ this.log(`Withdrawing ${amountUsdc} USDC from vault`);
372
+ // Step 1: Validate amount
373
+ const vaultState = await this.getVaultState();
374
+ if (amountUsdc > vaultState.balanceCents / 100) {
375
+ throw new Error('Insufficient vault balance');
376
+ }
377
+ // Step 2: Derive PDAs
378
+ const vaultId = BigInt(0); // Use vault_id 0 (first vault)
379
+ const [vaultPda] = await web3_js_1.PublicKey.findProgramAddress([Buffer.from('vault'), this.userPublicKey.toBuffer(), Buffer.from(vaultId.toString())], this.programId);
380
+ const vaultTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(this.USDC_MINT, vaultPda, true);
381
+ const userTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(this.USDC_MINT, this.userPublicKey);
382
+ // Step 3: Build transaction
383
+ const amountCents = BigInt(Math.round(amountUsdc * 100));
384
+ const transaction = new web3_js_1.Transaction();
385
+ // Build instruction data for withdraw_usdc
386
+ // Args: amount (u64)
387
+ const discriminator = Buffer.from([
388
+ 144, 156, 121, 240, 155, 115, 184, 189, // withdraw_usdc discriminator
389
+ ]);
390
+ const argsBuffer = Buffer.alloc(8);
391
+ argsBuffer.writeBigUInt64LE(amountCents, 0);
392
+ const instructionData = Buffer.concat([discriminator, argsBuffer]);
393
+ const withdrawIx = new web3_js_1.TransactionInstruction({
394
+ programId: this.programId,
395
+ keys: [
396
+ { pubkey: vaultPda, isSigner: false, isWritable: true },
397
+ { pubkey: vaultTokenAccount, isSigner: false, isWritable: true },
398
+ { pubkey: userTokenAccount, isSigner: false, isWritable: true },
399
+ { pubkey: this.userPublicKey, isSigner: true, isWritable: false },
400
+ { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
401
+ ],
402
+ data: instructionData,
403
+ });
404
+ transaction.add(withdrawIx);
405
+ // Step 4: Sign and send
406
+ this.log('Sending withdraw_usdc transaction...');
407
+ const txHash = await this.sendAndConfirmTx(transaction);
408
+ this.log(`Withdrawal confirmed: ${txHash}`);
409
+ // Step 5: Fetch updated balance
410
+ const newState = await this.getVaultState();
411
+ return {
412
+ txHash,
413
+ amountUsdc,
414
+ newBalanceUsdc: newState.balanceCents / 100,
415
+ timestamp: Date.now(),
416
+ };
417
+ }
418
+ catch (error) {
419
+ throw this.formatError('WITHDRAW_FAILED', error);
420
+ }
421
+ }
422
+ /**
423
+ * Send and confirm transaction (supports both keypair and wallet adapter)
424
+ *
425
+ * @private
426
+ */
427
+ async sendAndConfirmTx(transaction) {
428
+ if (this.keypair) {
429
+ // Backend mode: Use keypair signing
430
+ const txHash = await this.sendAndConfirmTx(transaction);
431
+ return txHash;
432
+ }
433
+ else if (this.signTransaction) {
434
+ // Frontend mode: Use wallet adapter signing (non-custodial)
435
+ try {
436
+ // Sign transaction with wallet adapter
437
+ const signedTx = await this.signTransaction(transaction);
438
+ // Serialize and send
439
+ const serialized = signedTx.serialize();
440
+ const txHash = await this.connection.sendRawTransaction(serialized, {
441
+ skipPreflight: false,
442
+ maxRetries: 5,
443
+ });
444
+ // Wait for confirmation
445
+ await this.connection.confirmTransaction(txHash, 'confirmed');
446
+ return txHash;
447
+ }
448
+ catch (error) {
449
+ throw new Error(`Transaction signing failed: ${error instanceof Error ? error.message : String(error)}`);
450
+ }
451
+ }
452
+ else {
453
+ throw new Error('No signer available');
454
+ }
455
+ }
456
+ /**
457
+ * Read BigUInt64LE from buffer (for u64 fields)
458
+ *
459
+ * @private
460
+ */
461
+ readBigUInt64LE(buffer, offset) {
462
+ const lo = buffer.readUInt32LE(offset);
463
+ const hi = buffer.readUInt32LE(offset + 4);
464
+ return (BigInt(hi) << BigInt(32)) | BigInt(lo);
465
+ }
466
+ /**
467
+ * Build instruction data for initialize_vault
468
+ *
469
+ * @private
470
+ */
471
+ buildInitializeVaultIx(vaultId, maxPositionBps, riskLevel, usdcMint) {
472
+ // Discriminator for initialize_vault (first 8 bytes)
473
+ // This matches the Anchor IDL discriminator
474
+ const discriminator = Buffer.from([
475
+ 111, 17, 185, 250, 60, 122, 38, 254, // initialize_vault discriminator
476
+ ]);
477
+ // Build argument buffer
478
+ const args = Buffer.alloc(40); // 8 (vault_id u64) + 2 (maxPositionBps u16) + 1 (riskLevel u8) + 32 (Pubkey)
479
+ let offset = 0;
480
+ // vault_id (u64 little-endian)
481
+ args.writeBigUInt64LE(vaultId, offset);
482
+ offset += 8;
483
+ // max_position_size_bps (u16 little-endian)
484
+ args.writeUInt16LE(maxPositionBps, offset);
485
+ offset += 2;
486
+ // risk_level (u8)
487
+ args.writeUInt8(riskLevel, offset);
488
+ offset += 1;
489
+ // usdc_mint (Pubkey 32 bytes)
490
+ usdcMint.toBuffer().copy(args, offset);
491
+ // Combine discriminator + args
492
+ return Buffer.concat([discriminator, args]);
493
+ }
494
+ /**
495
+ * Get sysvar rent address
496
+ *
497
+ * @private
498
+ */
499
+ getSysvarRent() {
500
+ return new web3_js_1.PublicKey('SysvarRent111111111111111111111111111111111');
501
+ }
502
+ /**
503
+ * Format errors with context and consistency
504
+ *
505
+ * @private
506
+ */
507
+ formatError(code, error) {
508
+ const message = error instanceof Error ? error.message : String(error);
509
+ return new Error(`[VaultClient] ${code}: ${message}`);
510
+ }
511
+ /**
512
+ * Logging utility
513
+ *
514
+ * @private
515
+ */
516
+ log(message, data) {
517
+ if (process.env.NODE_ENV !== 'production') {
518
+ if (data) {
519
+ console.log(`[VaultClient] ${message}`, data);
520
+ }
521
+ else {
522
+ console.log(`[VaultClient] ${message}`);
523
+ }
524
+ }
525
+ }
526
+ }
527
+ exports.VaultClient = VaultClient;
528
+ exports.default = VaultClient;
529
+ //# sourceMappingURL=vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/clients/vault.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * ============ ORACULO_V2_MARKET SDK: MAIN ENTRY POINT ============
3
+ *
4
+ * Official TypeScript SDK for Sentinely V2
5
+ * Abstracts complex Solana/Anchor/MPP details behind clean DX
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { SentinelySDK } from '@sentinely/sdk';
10
+ *
11
+ * const sdk = new SentinelySDK({
12
+ * rpcUrl: 'https://devnet.helius-rpc.com/?api-key=YOUR_KEY',
13
+ * keypair: { publicKey: Uint8Array, secretKey: Uint8Array },
14
+ * });
15
+ *
16
+ * // Institutional vault
17
+ * await sdk.vault.initializeVault({ maxPositionBps: 500 });
18
+ * await sdk.vault.deposit({ amountUsdc: 10000 });
19
+ * const state = await sdk.vault.getVaultState();
20
+ *
21
+ * // AI predictions with invisible MPP payments
22
+ * const signal = await sdk.oracle.queryKalshiSignal({
23
+ * marketTicker: 'FED_RATES_MAR26',
24
+ * });
25
+ *
26
+ * // Immutable audit trails
27
+ * const reasoning = await sdk.compliance.getTradeReasoning(txHash);
28
+ * ```
29
+ */
30
+ import VaultClient from './clients/vault';
31
+ import OracleClient from './clients/oracle';
32
+ import ComplianceClient from './clients/compliance';
33
+ import type { SentinelyConfig } from './types';
34
+ export { VaultClient, OracleClient, ComplianceClient, };
35
+ export type { SentinelyConfig, VaultInitParams, RiskLimits, DepositParams, KalshiSignalQuery, KalshiSignal, TradeReasoning, VaultState, PaymentStatus, SentinelyError, DepositResponse, RiskUpdateResponse, VaultInitResponse, } from './types';
36
+ /**
37
+ * Main SDK class combining all three clients
38
+ *
39
+ * Provides unified interface for:
40
+ * 1. Vault management (deposits, risk limits)
41
+ * 2. Oracle queries (Kalshi predictions)
42
+ * 3. Compliance audits (Irys reasoning)
43
+ */
44
+ export declare class SentinelySDK {
45
+ /** Vault operations (deposits, risk management) */
46
+ vault: VaultClient;
47
+ /** Oracle operations (Kalshi signals with MPP payments) */
48
+ oracle: OracleClient;
49
+ /** Compliance operations (immutable audit trails) */
50
+ compliance: ComplianceClient;
51
+ /**
52
+ * Initialize the Sentinely SDK
53
+ *
54
+ * @param config - Configuration with RPC, keypair, and program ID
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * const sdk = new SentinelySDK({
59
+ * rpcUrl: 'https://devnet.helius-rpc.com',
60
+ * keypair: {
61
+ * publicKey: new Uint8Array([...]),
62
+ * secretKey: new Uint8Array([...]),
63
+ * },
64
+ * programId: 'A7FnyNVtkcRMEkhaBjgtKZ1Z7Mh4N9XLBN8AGneXNK2F',
65
+ * });
66
+ * ```
67
+ */
68
+ constructor(config: SentinelyConfig);
69
+ /**
70
+ * Health check: Verify all clients are properly initialized
71
+ *
72
+ * @returns Whether SDK is ready
73
+ */
74
+ isHealthy(): Promise<boolean>;
75
+ /**
76
+ * Get SDK version
77
+ */
78
+ static get version(): string;
79
+ }
80
+ export default SentinelySDK;
81
+ /**
82
+ * Create SDK instance with minimal config
83
+ * (utility function for quick initialization)
84
+ */
85
+ export declare function createSDK(config: SentinelyConfig): SentinelySDK;
86
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EACL,WAAW,EACX,YAAY,EACZ,gBAAgB,GACjB,CAAC;AAEF,YAAY,EACV,eAAe,EACf,eAAe,EACf,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,aAAa,EACb,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB;;;;;;;GAOG;AACH,qBAAa,YAAY;IACvB,mDAAmD;IAC5C,KAAK,EAAE,WAAW,CAAC;IAE1B,2DAA2D;IACpD,MAAM,EAAE,YAAY,CAAC;IAE5B,qDAAqD;IAC9C,UAAU,EAAE,gBAAgB,CAAC;IAEpC;;;;;;;;;;;;;;;;OAgBG;gBACS,MAAM,EAAE,eAAe;IAMnC;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAUnC;;OAEG;IACH,MAAM,KAAK,OAAO,IAAI,MAAM,CAE3B;CACF;AAGD,eAAe,YAAY,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,CAE/D"}