@quantabit/qbit-chain-sdk 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/types.d.ts ADDED
@@ -0,0 +1,760 @@
1
+ /**
2
+ * @quantabit/qbit-chain-sdk TypeScript Type Definitions
3
+ */
4
+
5
+ import { Connection, Keypair, PublicKey, Transaction, TransactionInstruction } from '@solana/web3.js';
6
+
7
+ // ============ Constants ============
8
+
9
+ export declare const LAMPORTS_PER_QBT: number;
10
+ export declare const QBIT_COIN_TYPE: 766;
11
+
12
+ export declare const GENESIS_HASH: {
13
+ mainnet: string;
14
+ devnet: string;
15
+ };
16
+
17
+ export declare const CHAIN_PARAMS: {
18
+ SLOT_DURATION_MS: number;
19
+ SLOTS_PER_EPOCH: number;
20
+ NATIVE_TOKEN_SYMBOL: string;
21
+ NATIVE_TOKEN_DECIMALS: number;
22
+ };
23
+
24
+ export declare const CHAIN_PROGRAMS: {
25
+ SYSTEM_PROGRAM: string;
26
+ TOKEN_PROGRAM: string;
27
+ ASSOCIATED_TOKEN_PROGRAM: string;
28
+ MEMO_PROGRAM: string;
29
+ STAKE_PROGRAM: string;
30
+ STAKE_CONFIG: string;
31
+ VOTE_PROGRAM: string;
32
+ DID_PROGRAM: string;
33
+ };
34
+
35
+ export interface ChainEndpoint {
36
+ rpc: string;
37
+ ws: string;
38
+ genesisHash: string | null;
39
+ }
40
+
41
+ export declare const CHAIN_ENDPOINTS: {
42
+ mainnet: ChainEndpoint;
43
+ testnet: ChainEndpoint;
44
+ devnet: ChainEndpoint;
45
+ };
46
+
47
+ export declare const DEFAULT_CONFIRM_OPTIONS: {
48
+ commitment: string;
49
+ preflightCommitment: string;
50
+ skipPreflight: boolean;
51
+ };
52
+
53
+ export declare const TIMEOUT: {
54
+ RPC_REQUEST: number;
55
+ SEND_TRANSACTION: number;
56
+ CONFIRM_TRANSACTION: number;
57
+ HEALTH_CHECK: number;
58
+ };
59
+
60
+ export declare const RETRY: {
61
+ MAX_RETRIES: number;
62
+ BASE_DELAY_MS: number;
63
+ MAX_DELAY_MS: number;
64
+ };
65
+
66
+ // ============ Connection ============
67
+
68
+ export interface QBitConnectionOptions {
69
+ endpoint?: string;
70
+ commitment?: 'processed' | 'confirmed' | 'finalized';
71
+ wsEndpoint?: string;
72
+ timeoutMs?: number;
73
+ network?: 'mainnet' | 'devnet' | 'testnet';
74
+ autoValidate?: boolean;
75
+ onConnect?: (info: { endpoint: string; network: string }) => void;
76
+ onDisconnect?: (info: { endpoint: string; error?: Error; reason?: string }) => void;
77
+ onError?: (error: Error) => void;
78
+ onNetworkMismatch?: (info: { expected: string; actual: string; network: string }) => void;
79
+ }
80
+
81
+ export interface NetworkValidationResult {
82
+ valid: boolean;
83
+ expected: string | null;
84
+ actual: string;
85
+ network: string;
86
+ }
87
+
88
+ export interface ConnectionInfo {
89
+ endpoint: string;
90
+ wsEndpoint: string | null;
91
+ network: string;
92
+ commitment: string;
93
+ isConnected: boolean;
94
+ lastHealthCheck: number | null;
95
+ timeoutMs: number;
96
+ }
97
+
98
+ export declare class QBitConnection {
99
+ constructor(options?: QBitConnectionOptions);
100
+ get raw(): Connection;
101
+ getRawConnection(): Promise<Connection>;
102
+ get endpoint(): string;
103
+ get network(): string;
104
+ get isConnected(): boolean;
105
+ switchNetwork(network: 'mainnet' | 'devnet' | 'testnet'): void;
106
+ validateNetwork(): Promise<NetworkValidationResult>;
107
+ getHealth(): Promise<string>;
108
+ getVersion(): Promise<Record<string, string | number>>;
109
+ getSlot(): Promise<number>;
110
+ getBlockHeight(): Promise<number>;
111
+ getEpochInfo(): Promise<{
112
+ absoluteSlot: number;
113
+ blockHeight: number;
114
+ epoch: number;
115
+ slotIndex: number;
116
+ slotsInEpoch: number;
117
+ transactionCount: number;
118
+ }>;
119
+ getLatestBlockhash(): Promise<{ blockhash: string; lastValidBlockHeight: number }>;
120
+ getGenesisHash(): Promise<string>;
121
+ getSupply(): Promise<any>;
122
+ getClusterNodes(): Promise<any[]>;
123
+ getVoteAccounts(): Promise<{ current: any[]; delinquent: any[] }>;
124
+ getTransactionCount(): Promise<number>;
125
+ getBlock(slot: number, options?: { transactionDetails?: 'full' | 'accounts' | 'signatures' | 'none'; rewards?: boolean; commitment?: string }): Promise<any | null>;
126
+ getBlockTime(slot: number): Promise<number | null>;
127
+ getBlocks(startSlot: number, endSlot?: number): Promise<number[]>;
128
+ getFirstAvailableBlock(): Promise<number>;
129
+ getRecentPerformanceSamples(limit?: number): Promise<any[]>;
130
+ getInflationRate(): Promise<{ total: number; validator: number; foundation: number; epoch: number }>;
131
+ getInflationReward(addresses: Array<string | PublicKey>, epoch?: number): Promise<any[]>;
132
+ requestAirdrop(address: string | PublicKey, amountQBT: number): Promise<string>;
133
+ getBalance(address: string | PublicKey): Promise<number>;
134
+ getBalanceQBT(address: string | PublicKey): Promise<number>;
135
+ getAccountInfo(address: string | PublicKey): Promise<any | null>;
136
+ accountExists(address: string | PublicKey): Promise<boolean>;
137
+ getMultipleBalances(addresses: string[]): Promise<Array<{ address: string; lamports: number; qbt: number }>>;
138
+ sendTransaction(transaction: Transaction, options?: { skipPreflight?: boolean; preflightCommitment?: string }): Promise<string>;
139
+ confirmTransaction(signature: string, commitment?: string, context?: any): Promise<any>;
140
+ getTransaction(signature: string): Promise<any | null>;
141
+ getSignaturesForAddress(address: string | PublicKey, options?: { limit?: number; before?: string; until?: string }): Promise<any[]>;
142
+ getMinimumBalanceForRentExemption(dataSize: number): Promise<number>;
143
+ getTokenAccountsByOwner(owner: string | PublicKey): Promise<any[]>;
144
+ getTokenBalance(tokenAccountAddress: string): Promise<{ amount: string; decimals: number; uiAmount: number }>;
145
+ getConnectionInfo(): ConnectionInfo;
146
+ destroy(): void;
147
+ }
148
+
149
+ export declare function getDefaultConnection(): QBitConnection;
150
+ export declare function resetDefaultConnection(options?: QBitConnectionOptions): QBitConnection;
151
+ export declare function resolveRawConnection(connection: QBitConnection | { raw: Connection; getRawConnection?: () => Promise<Connection> }): Promise<Connection>;
152
+ export declare function withRetry<T>(fn: () => Promise<T>, maxRetries?: number, operationName?: string): Promise<T>;
153
+
154
+ // ============ Keypair ============
155
+
156
+ export interface KeypairGenerateOptions {
157
+ strength?: 128 | 256;
158
+ accountIndex?: number;
159
+ useLegacyPath?: boolean;
160
+ language?: string;
161
+ }
162
+
163
+ export interface KeypairFromMnemonicOptions {
164
+ accountIndex?: number;
165
+ coinType?: number;
166
+ useLegacyPath?: boolean;
167
+ }
168
+
169
+ export declare class QBitKeypair {
170
+ get publicKey(): PublicKey;
171
+ get address(): string;
172
+ get keypair(): Keypair;
173
+ get mnemonic(): string | null;
174
+ get derivationPath(): string;
175
+ exportPrivateKey(): string;
176
+ exportSecretKey(): Uint8Array;
177
+ sign(message: Uint8Array | string): Uint8Array;
178
+ signBase58(message: string): string;
179
+ destroy(): void;
180
+
181
+ static generate(options?: KeypairGenerateOptions): Promise<QBitKeypair>;
182
+ static fromMnemonic(mnemonic: string, options?: KeypairFromMnemonicOptions): Promise<QBitKeypair>;
183
+ static fromPrivateKey(privateKey: string | Uint8Array): QBitKeypair;
184
+ static fromJsonKey(jsonKey: number[]): QBitKeypair;
185
+ static random(): QBitKeypair;
186
+ static deriveMultiple(mnemonic: string, count: number, startIndex?: number, options?: { useLegacyPath?: boolean; coinType?: number }): Promise<QBitKeypair[]>;
187
+ }
188
+
189
+ export declare function generateMnemonic(strength?: number): string;
190
+ export declare function mnemonicToKeypair(mnemonic: string, accountIndex?: number): Promise<QBitKeypair>;
191
+ export declare function validateMnemonic(mnemonic: string): boolean;
192
+ export declare function verifySignature(message: string, signature: Uint8Array | string, publicKey: string | PublicKey): boolean;
193
+
194
+ // ============ Transaction ============
195
+
196
+ export interface TransferResult {
197
+ signature: string;
198
+ amount: number;
199
+ from: string;
200
+ to: string;
201
+ memo?: string | null;
202
+ }
203
+
204
+ export interface TokenTransferResult {
205
+ signature: string;
206
+ mint: string;
207
+ amount: number;
208
+ from: string;
209
+ to: string;
210
+ }
211
+
212
+ export interface SimulationResult {
213
+ err: any | null;
214
+ logs: string[];
215
+ unitsConsumed: number;
216
+ estimatedFee: number;
217
+ returnData: any | null;
218
+ }
219
+
220
+ export declare class QBitTransaction {
221
+ constructor(connection?: QBitConnection);
222
+ addInstruction(instruction: TransactionInstruction): QBitTransaction;
223
+ addSigner(signer: Keypair | QBitKeypair): QBitTransaction;
224
+ transfer(from: PublicKey | string, to: PublicKey | string, amountQBT: number): QBitTransaction;
225
+ transferToken(from: PublicKey | string, to: PublicKey | string, mintAddress: string, amount: number, decimals: number, feePayer?: PublicKey | string): Promise<QBitTransaction>;
226
+ batchTransfer(from: PublicKey | string, transfers: Array<{ to: string; amountQBT: number }>): QBitTransaction;
227
+ addMemo(memo: string): QBitTransaction;
228
+ setComputeUnits(units: number): QBitTransaction;
229
+ setPriorityFee(microLamports: number): QBitTransaction;
230
+ build(feePayer: PublicKey | string): Promise<Transaction>;
231
+ signTransaction(signer: Keypair | QBitKeypair): Promise<Transaction>;
232
+ sendAndConfirm(signer: Keypair | QBitKeypair, options?: { skipPreflight?: boolean; commitment?: string; feePayer?: PublicKey | string }): Promise<string>;
233
+ send(signer: Keypair | QBitKeypair, options?: { skipPreflight?: boolean; commitment?: string; feePayer?: PublicKey | string }): Promise<string>;
234
+ confirm(signature: string, commitment?: string): Promise<any>;
235
+ simulate(signer: Keypair | QBitKeypair): Promise<SimulationResult>;
236
+ }
237
+
238
+ export declare function transferQBT(connection: QBitConnection, fromKeypair: Keypair | QBitKeypair, toAddress: string, amountQBT: number, options?: { memo?: string; skipPreflight?: boolean; commitment?: string }): Promise<TransferResult>;
239
+ export declare function transferToken(connection: QBitConnection, fromKeypair: Keypair | QBitKeypair, toAddress: string, mintAddress: string, amount: number, decimals: number, options?: { memo?: string; skipPreflight?: boolean; commitment?: string }): Promise<TokenTransferResult>;
240
+ export declare function estimateTransactionFee(connection: QBitConnection, transaction: Transaction): Promise<number>;
241
+
242
+ // ============ SPL Token Lifecycle ============
243
+
244
+ export interface TokenTxOptions {
245
+ skipPreflight?: boolean;
246
+ commitment?: string;
247
+ }
248
+
249
+ export interface CreateMintResult {
250
+ signature: string;
251
+ mint: string;
252
+ decimals: number;
253
+ mintAuthority: string;
254
+ freezeAuthority: string | null;
255
+ }
256
+
257
+ export interface CreateMintOptions extends TokenTxOptions {
258
+ decimals?: number;
259
+ mintAuthority?: PublicKey | string;
260
+ freezeAuthority?: PublicKey | string | null;
261
+ mintKeypair?: Keypair;
262
+ }
263
+
264
+ export type TokenAuthorityType = 'MintTokens' | 'FreezeAccount' | 'AccountOwner' | 'CloseAccount';
265
+
266
+ export declare function createMint(connection: QBitConnection, payer: Keypair | QBitKeypair, options?: CreateMintOptions): Promise<CreateMintResult>;
267
+ export declare function getOrCreateTokenAccount(connection: QBitConnection, payer: Keypair | QBitKeypair, mintAddress: string, ownerAddress?: string): Promise<{ address: string; created: boolean; signature: string | null }>;
268
+ export declare function mintTo(connection: QBitConnection, mintAuthority: Keypair | QBitKeypair, mintAddress: string, toAddress: string, amount: number | bigint, options?: TokenTxOptions): Promise<{ signature: string; mint: string; to: string; tokenAccount: string; amount: string }>;
269
+ export declare function burn(connection: QBitConnection, owner: Keypair | QBitKeypair, mintAddress: string, amount: number | bigint, options?: TokenTxOptions & { decimals?: number }): Promise<{ signature: string; mint: string; amount: string }>;
270
+ export declare function approve(connection: QBitConnection, owner: Keypair | QBitKeypair, mintAddress: string, delegateAddress: string, amount: number | bigint, options?: TokenTxOptions): Promise<{ signature: string; delegate: string; amount: string }>;
271
+ export declare function revoke(connection: QBitConnection, owner: Keypair | QBitKeypair, mintAddress: string, options?: TokenTxOptions): Promise<{ signature: string }>;
272
+ export declare function freezeAccount(connection: QBitConnection, freezeAuthority: Keypair | QBitKeypair, mintAddress: string, ownerAddress: string, options?: TokenTxOptions): Promise<{ signature: string; tokenAccount: string }>;
273
+ export declare function thawAccount(connection: QBitConnection, freezeAuthority: Keypair | QBitKeypair, mintAddress: string, ownerAddress: string, options?: TokenTxOptions): Promise<{ signature: string; tokenAccount: string }>;
274
+ export declare function setAuthority(connection: QBitConnection, currentAuthority: Keypair | QBitKeypair, targetAddress: string, authorityType: TokenAuthorityType, newAuthorityAddress: string | null, options?: TokenTxOptions): Promise<{ signature: string; authorityType: string; newAuthority: string | null }>;
275
+ export declare function closeTokenAccount(connection: QBitConnection, owner: Keypair | QBitKeypair, mintAddress: string, destinationAddress?: string, options?: TokenTxOptions): Promise<{ signature: string; tokenAccount: string }>;
276
+ export declare function getTokenAccountDelegation(connection: QBitConnection, tokenAccountAddress: string): Promise<{ delegate: string | null; delegatedAmount: string }>;
277
+
278
+ // ============ Anchor Memo ============
279
+
280
+ export declare const QBIT_ANCHOR_NAMESPACE: 'qbit_anchor';
281
+ export declare const QBIT_DID_ANCHOR_NAMESPACE: 'qbit_did';
282
+ export declare const MAX_QBIT_ANCHOR_MEMO_BYTES: 512;
283
+
284
+ export interface QBitAnchorMemoPayload {
285
+ action?: string;
286
+ subject?: string;
287
+ did?: string;
288
+ credential_id?: string;
289
+ resource_id?: string;
290
+ document_hash?: string;
291
+ credential_hash?: string;
292
+ content_hash?: string;
293
+ version?: string | number;
294
+ timestamp?: string | number;
295
+ extra?: Record<string, any>;
296
+ }
297
+
298
+ export interface QBitAnchorMemoOptions {
299
+ namespace?: string;
300
+ maxBytes?: number;
301
+ priorityFee?: number;
302
+ }
303
+
304
+ export interface QBitAnchorTransactionResult {
305
+ transaction: Transaction;
306
+ memo: string;
307
+ payload: Record<string, any> | null;
308
+ }
309
+
310
+ export declare function buildQBitAnchorMemo(payload: QBitAnchorMemoPayload, options?: QBitAnchorMemoOptions): string;
311
+ export declare function parseQBitAnchorMemo(memo: string, options?: { namespace?: string }): Record<string, any> | null;
312
+ export declare function extractQBitAnchorMemos(transaction: any, options?: { namespace?: string }): Array<Record<string, any>>;
313
+ export declare function createQBitAnchorTransaction(
314
+ connection: QBitConnection,
315
+ feePayer: string | PublicKey,
316
+ payload: QBitAnchorMemoPayload,
317
+ options?: QBitAnchorMemoOptions
318
+ ): Promise<QBitAnchorTransactionResult>;
319
+
320
+ export interface QBitAnchorWalletProvider {
321
+ publicKey?: { toBase58?: () => string; toString?: () => string };
322
+ signAndSendTransaction?: (transaction: Transaction, options?: any) => Promise<any>;
323
+ signTransaction?: (transaction: Transaction) => Promise<Transaction>;
324
+ }
325
+
326
+ export interface BroadcastAnchorOptions extends QBitAnchorMemoOptions {
327
+ address?: string;
328
+ skipPreflight?: boolean;
329
+ preflightCommitment?: string;
330
+ waitForConfirmation?: boolean;
331
+ commitment?: 'processed' | 'confirmed' | 'finalized';
332
+ pollIntervalMs?: number;
333
+ maxPolls?: number;
334
+ timeoutMs?: number;
335
+ }
336
+
337
+ export interface BroadcastAnchorResult {
338
+ txHash: string | null;
339
+ memo: string;
340
+ raw: any;
341
+ confirmed?: boolean;
342
+ slot?: number | null;
343
+ }
344
+
345
+ export interface AnchorConfirmationResult {
346
+ confirmed: boolean;
347
+ slot: number | null;
348
+ status: string | null;
349
+ timedOut?: boolean;
350
+ }
351
+
352
+ export interface VerifyAnchoredMemoResult {
353
+ found: boolean;
354
+ matched: boolean;
355
+ memos: Array<Record<string, any>>;
356
+ }
357
+
358
+ export declare function broadcastQBitAnchor(
359
+ connection: QBitConnection,
360
+ provider: QBitAnchorWalletProvider,
361
+ memoOrPayload: QBitAnchorMemoPayload | string,
362
+ options?: BroadcastAnchorOptions
363
+ ): Promise<BroadcastAnchorResult>;
364
+
365
+ export declare function waitForAnchorConfirmation(
366
+ connection: QBitConnection | { raw?: any; getRawConnection?: () => Promise<any> },
367
+ signature: string,
368
+ options?: { commitment?: string; pollIntervalMs?: number; maxPolls?: number; timeoutMs?: number }
369
+ ): Promise<AnchorConfirmationResult>;
370
+
371
+ export declare function verifyAnchoredMemo(
372
+ connection: QBitConnection | { raw?: any; getRawConnection?: () => Promise<any> },
373
+ txHash: string,
374
+ options?: { namespace?: string; commitment?: string; match?: Record<string, any> }
375
+ ): Promise<VerifyAnchoredMemoResult>;
376
+
377
+ // ============ Account ============
378
+
379
+ export interface AccountInfo {
380
+ address: string;
381
+ lamports: number;
382
+ qbt: number;
383
+ owner: string;
384
+ executable: boolean;
385
+ rentEpoch: number;
386
+ dataSize: number;
387
+ }
388
+
389
+ export interface TokenAccount {
390
+ address: string;
391
+ mint: string;
392
+ owner: string;
393
+ amount: string;
394
+ decimals: number;
395
+ uiAmount: number;
396
+ }
397
+
398
+ export interface TokenMintInfo {
399
+ address: string;
400
+ supply: string;
401
+ decimals: number;
402
+ mintAuthority: string | null;
403
+ freezeAuthority: string | null;
404
+ isInitialized: boolean;
405
+ }
406
+
407
+ export interface TransactionHistoryItem {
408
+ signature: string;
409
+ slot: number;
410
+ blockTime: number | null;
411
+ confirmationStatus: string;
412
+ err: any | null;
413
+ memo: string | null;
414
+ fee?: number;
415
+ preBalances?: number[];
416
+ postBalances?: number[];
417
+ logMessages?: string[];
418
+ }
419
+
420
+ export declare function getAccountInfo(address: string, connection?: QBitConnection): Promise<AccountInfo | null>;
421
+ export declare function getBalance(address: string, connection?: QBitConnection): Promise<{ lamports: number; qbt: number }>;
422
+ export declare function getTokenAccounts(ownerAddress: string, connection?: QBitConnection): Promise<TokenAccount[]>;
423
+ export declare function getTokenMintInfo(mintAddress: string, connection?: QBitConnection): Promise<TokenMintInfo>;
424
+ export declare function getAssociatedTokenAccount(ownerAddress: string, mintAddress: string, connection?: QBitConnection): Promise<{ address: string; exists: boolean }>;
425
+ export declare function getTransactionHistory(address: string, options?: { limit?: number; before?: string; until?: string; withDetails?: boolean }, connection?: QBitConnection): Promise<TransactionHistoryItem[]>;
426
+ export declare function getStakeAccounts(ownerAddress: string, connection?: QBitConnection): Promise<any[]>;
427
+
428
+ // ============ Stake ============
429
+
430
+ export interface StakeResult {
431
+ signature: string;
432
+ stakeAccount: string;
433
+ amount: number;
434
+ validator: string;
435
+ }
436
+
437
+ export interface StakeActivation {
438
+ state: 'active' | 'inactive' | 'activating' | 'deactivating';
439
+ active: number;
440
+ inactive: number;
441
+ }
442
+
443
+ export interface ValidatorInfo {
444
+ votePubkey: string;
445
+ nodePubkey: string;
446
+ activatedStake: number;
447
+ activatedStakeQBT: number;
448
+ commission: number;
449
+ lastVote: number;
450
+ epochCredits?: any[];
451
+ }
452
+
453
+ export interface ValidatorsResult {
454
+ current: ValidatorInfo[];
455
+ delinquent: ValidatorInfo[];
456
+ totalValidators: number;
457
+ totalStake: number;
458
+ }
459
+
460
+ export declare function createStakeAccount(connection: QBitConnection, fromKeypair: Keypair | QBitKeypair, voteAccountAddress: string, amountQBT: number, options?: { stakeKeypair?: Keypair; staker?: string; withdrawer?: string }): Promise<StakeResult>;
461
+ export declare function delegate(connection: QBitConnection, authorizedKeypair: Keypair | QBitKeypair, stakeAccountAddress: string, voteAccountAddress: string): Promise<string>;
462
+ export declare function deactivate(connection: QBitConnection, authorizedKeypair: Keypair | QBitKeypair, stakeAccountAddress: string): Promise<string>;
463
+ export declare function withdrawStake(connection: QBitConnection, withdrawerKeypair: Keypair | QBitKeypair, stakeAccountAddress: string, toAddress: string, amountQBT?: number): Promise<string>;
464
+ export declare function getStakeActivation(connection: QBitConnection, stakeAccountAddress: string): Promise<StakeActivation>;
465
+ export declare function getValidators(connection: QBitConnection): Promise<ValidatorsResult>;
466
+
467
+ // ============ RPC ============
468
+
469
+ export interface ChainStatus {
470
+ health: string;
471
+ network: string;
472
+ endpoint: string;
473
+ version: string;
474
+ featureSet: number;
475
+ epoch: number;
476
+ blockHeight: number;
477
+ slot: number;
478
+ slotProgress: string;
479
+ totalSupplyQBT: number;
480
+ circulatingQBT: number;
481
+ transactionCount: number;
482
+ }
483
+
484
+ export declare function getChainHealth(connection?: QBitConnection): Promise<string>;
485
+ export declare function getChainVersion(connection?: QBitConnection): Promise<Record<string, string | number>>;
486
+ export declare function getBlockHeight(connection?: QBitConnection): Promise<number>;
487
+ export declare function getSlot(connection?: QBitConnection): Promise<number>;
488
+ export declare function getEpochInfo(connection?: QBitConnection): Promise<any>;
489
+ export declare function getLatestBlockhash(connection?: QBitConnection): Promise<{ blockhash: string; lastValidBlockHeight: number }>;
490
+ export declare function getGenesisHash(connection?: QBitConnection): Promise<string>;
491
+ export declare function getSupply(connection?: QBitConnection): Promise<any>;
492
+ export declare function getMinimumBalanceForRentExemption(dataSize?: number, connection?: QBitConnection): Promise<number>;
493
+ export declare function getClusterNodes(connection?: QBitConnection): Promise<any[]>;
494
+ export declare function getVoteAccounts(connection?: QBitConnection): Promise<any>;
495
+ export declare function getTransactionCount(connection?: QBitConnection): Promise<number>;
496
+ export declare function getBlock(slot: number, options?: { transactionDetails?: string; rewards?: boolean; commitment?: string }, connection?: QBitConnection): Promise<any | null>;
497
+ export declare function getBlockTime(slot: number, connection?: QBitConnection): Promise<number | null>;
498
+ export declare function getBlocks(startSlot: number, endSlot?: number, connection?: QBitConnection): Promise<number[]>;
499
+ export declare function getRecentPerformanceSamples(limit?: number, connection?: QBitConnection): Promise<any[]>;
500
+ export declare function getInflationRate(connection?: QBitConnection): Promise<{ total: number; validator: number; foundation: number; epoch: number }>;
501
+ export declare function requestAirdrop(address: string, amountQBT: number, connection?: QBitConnection): Promise<string>;
502
+ export declare function validateNetwork(connection?: QBitConnection): Promise<NetworkValidationResult>;
503
+ export declare function getChainStatus(connection?: QBitConnection): Promise<ChainStatus>;
504
+
505
+ // ============ Utils ============
506
+
507
+ export declare function qbtToLamports(qbt: number): number;
508
+ export declare function lamportsToQbt(lamports: number): number;
509
+ export declare function formatQbt(lamports: number, decimals?: number): string;
510
+ export declare function isValidAddress(address: string): boolean;
511
+ export declare function shortenAddress(address: string, startLen?: number, endLen?: number): string;
512
+ export declare function toPublicKey(addressOrKey: string | PublicKey): PublicKey;
513
+
514
+ // ============ Errors ============
515
+
516
+ export declare class QBitError extends Error {
517
+ code: string;
518
+ details: Record<string, any>;
519
+ timestamp: number;
520
+ constructor(message: string, code?: string, details?: Record<string, any>);
521
+ toJSON(): { name: string; code: string; message: string; details: Record<string, any>; timestamp: number };
522
+ }
523
+
524
+ export declare class QBitRpcError extends QBitError {
525
+ rpcCode: number;
526
+ method: string;
527
+ constructor(message: string, rpcCode?: number, method?: string);
528
+ }
529
+
530
+ export declare class QBitNetworkError extends QBitError {
531
+ endpoint: string;
532
+ cause: Error | null;
533
+ constructor(message: string, endpoint?: string, cause?: Error | null);
534
+ }
535
+
536
+ export declare class QBitNetworkMismatchError extends QBitError {
537
+ constructor(expected: string, actual: string, network: string);
538
+ }
539
+
540
+ export declare class QBitTransactionError extends QBitError {
541
+ signature: string;
542
+ logs: string[];
543
+ constructor(message: string, signature?: string, logs?: string[]);
544
+ }
545
+
546
+ export declare class QBitInsufficientFundsError extends QBitTransactionError {
547
+ constructor(required: number, available: number);
548
+ }
549
+
550
+ export declare class QBitAccountNotFoundError extends QBitError {
551
+ constructor(address: string);
552
+ }
553
+
554
+ export declare class QBitTokenError extends QBitError {
555
+ constructor(message: string, mintAddress?: string, details?: Record<string, any>);
556
+ }
557
+
558
+ export declare class QBitKeypairError extends QBitError {
559
+ constructor(message: string);
560
+ }
561
+
562
+ export declare const ERROR_CODES: {
563
+ NETWORK_ERROR: string;
564
+ NETWORK_MISMATCH: string;
565
+ RPC_ERROR: string;
566
+ TIMEOUT: string;
567
+ TRANSACTION_ERROR: string;
568
+ INSUFFICIENT_FUNDS: string;
569
+ SIGNATURE_FAILED: string;
570
+ BLOCKHASH_EXPIRED: string;
571
+ ACCOUNT_NOT_FOUND: string;
572
+ TOKEN_ERROR: string;
573
+ ATA_NOT_FOUND: string;
574
+ KEYPAIR_ERROR: string;
575
+ INVALID_MNEMONIC: string;
576
+ INVALID_PRIVATE_KEY: string;
577
+ };
578
+
579
+ // ============ Subscription ============
580
+
581
+ export interface AccountChangeInfo {
582
+ address: string;
583
+ lamports: number;
584
+ owner: string;
585
+ dataSize: number;
586
+ executable: boolean;
587
+ rentEpoch: number;
588
+ slot: number;
589
+ }
590
+
591
+ export interface ProgramLogsInfo {
592
+ programId: string;
593
+ signature: string;
594
+ err: any | null;
595
+ logs: string[];
596
+ slot: number;
597
+ }
598
+
599
+ export interface SlotChangeInfo {
600
+ slot: number;
601
+ parent: number;
602
+ root: number;
603
+ }
604
+
605
+ export interface SignatureInfo {
606
+ signature: string;
607
+ err: any | null;
608
+ confirmed: boolean;
609
+ slot: number;
610
+ }
611
+
612
+ export declare class QBitSubscription {
613
+ constructor(connection: QBitConnection);
614
+ onAccountChange(address: string, callback: (info: AccountChangeInfo, context: any) => void, commitment?: string): number;
615
+ onProgramLogs(programId: string, callback: (info: ProgramLogsInfo, context: any) => void, commitment?: string): number;
616
+ onAllLogs(callback: (info: Omit<ProgramLogsInfo, 'programId'>, context: any) => void, commitment?: string): number;
617
+ onSlotChange(callback: (info: SlotChangeInfo) => void): number;
618
+ onSignature(signature: string, callback: (info: SignatureInfo, context: any) => void, commitment?: string): number;
619
+ onRootChange(callback: (info: { root: number }) => void): number;
620
+ unsubscribe(subscriptionId: number): boolean;
621
+ unsubscribeAll(): void;
622
+ getActiveSubscriptions(): Array<{ id: number; type: string; target?: string }>;
623
+ get activeCount(): number;
624
+ destroy(): void;
625
+ }
626
+
627
+ // ============ Token Registry ============
628
+
629
+ export interface TokenMeta {
630
+ address: string;
631
+ symbol: string;
632
+ name: string;
633
+ decimals: number;
634
+ icon: string;
635
+ category: 'native' | 'stablecoin' | 'governance' | 'utility' | 'lp';
636
+ verified: boolean;
637
+ mintAuthority?: string | null;
638
+ freezeAuthority?: string | null;
639
+ supply?: string;
640
+ }
641
+
642
+ export declare class TokenRegistry {
643
+ constructor(connection?: QBitConnection | null);
644
+ getToken(mintAddress: string): TokenMeta | null;
645
+ resolveToken(mintAddress: string): Promise<TokenMeta | null>;
646
+ resolveMany(mintAddresses: string[]): Promise<Map<string, TokenMeta>>;
647
+ register(tokenMeta: Partial<TokenMeta> & { address: string }): void;
648
+ registerMany(tokens: Array<Partial<TokenMeta> & { address: string }>): void;
649
+ getAll(category?: string | null): TokenMeta[];
650
+ getVerified(): TokenMeta[];
651
+ search(query: string): TokenMeta[];
652
+ formatAmount(mintAddress: string, rawAmount: number | string, displayDecimals?: number): string;
653
+ formatWithSymbol(mintAddress: string, rawAmount: number | string): string;
654
+ get size(): number;
655
+ }
656
+
657
+ export declare function getTokenRegistry(connection?: QBitConnection | null): TokenRegistry;
658
+ export declare const KNOWN_TOKENS: Readonly<Record<string, TokenMeta>>;
659
+
660
+ // ============ Transaction Parser ============
661
+
662
+ export interface ParsedEvent {
663
+ type: string;
664
+ program: string;
665
+ from?: string;
666
+ to?: string;
667
+ amount?: number;
668
+ amountQBT?: number;
669
+ mint?: string;
670
+ decimals?: number;
671
+ stakeAccount?: string;
672
+ voteAccount?: string;
673
+ authority?: string;
674
+ newAccount?: string;
675
+ lamports?: number;
676
+ space?: number;
677
+ owner?: string;
678
+ inner?: boolean;
679
+ info?: Record<string, any>;
680
+ }
681
+
682
+ export interface ParsedProgram {
683
+ address: string;
684
+ name: string;
685
+ }
686
+
687
+ export interface ParsedTransaction {
688
+ signature: string;
689
+ type: string;
690
+ summary: string;
691
+ success: boolean;
692
+ fee: number;
693
+ feeQBT: number;
694
+ blockTime: number | null;
695
+ slot: number;
696
+ events: ParsedEvent[];
697
+ signers: string[];
698
+ programs: ParsedProgram[];
699
+ logs: string[];
700
+ raw: any | null;
701
+ }
702
+
703
+ export declare class TransactionParser {
704
+ constructor(connection: QBitConnection);
705
+ parse(signature: string): Promise<ParsedTransaction>;
706
+ parseMany(signatures: string[]): Promise<ParsedTransaction[]>;
707
+ parseRecentForAddress(address: string, limit?: number): Promise<ParsedTransaction[]>;
708
+ }
709
+
710
+ // ============ Program Helper ============
711
+
712
+ export interface ProgramAccountInfo {
713
+ pubkey: string;
714
+ lamports: number;
715
+ dataSize: number;
716
+ data: Buffer;
717
+ owner: string;
718
+ }
719
+
720
+ export interface PDAAccountInfo {
721
+ address: string;
722
+ exists: boolean;
723
+ data: Buffer | null;
724
+ lamports: number;
725
+ }
726
+
727
+ export interface ProgramAccountFilters {
728
+ dataSize?: number;
729
+ memcmp?: Array<{ offset: number; bytes: string }>;
730
+ }
731
+
732
+ export declare class ProgramHelper {
733
+ constructor(connection: QBitConnection, programId: string | PublicKey);
734
+ get programId(): PublicKey;
735
+
736
+ // PDA
737
+ findPDA(seeds: Array<Buffer | Uint8Array | string | PublicKey>): [PublicKey, number];
738
+ findPDAMany(seedsList: Array<Array<Buffer | Uint8Array | string | PublicKey>>): Array<[PublicKey, number]>;
739
+ isPDA(address: string | PublicKey): boolean;
740
+
741
+ // Instruction Building
742
+ buildInstruction(data: Buffer | Uint8Array, keys: Array<{ pubkey: PublicKey | string; isSigner: boolean; isWritable: boolean }>): TransactionInstruction;
743
+ buildIndexedInstruction(instructionIndex: number, payload: Buffer | null, keys: Array<{ pubkey: PublicKey | string; isSigner: boolean; isWritable: boolean }>): TransactionInstruction;
744
+
745
+ // Execution
746
+ execute(signer: Keypair, instructions: TransactionInstruction[], options?: { skipPreflight?: boolean; commitment?: string }): Promise<string>;
747
+ simulate(signer: Keypair, instructions: TransactionInstruction[]): Promise<{ err: any; logs: string[]; unitsConsumed: number }>;
748
+
749
+ // Account Queries
750
+ getAccounts(filters?: ProgramAccountFilters): Promise<ProgramAccountInfo[]>;
751
+ getPDAAccount(seeds: Array<Buffer | Uint8Array | string>): Promise<PDAAccountInfo>;
752
+
753
+ // Serialization Helpers
754
+ static encodeU32(value: number): Buffer;
755
+ static encodeU64(value: bigint | number): Buffer;
756
+ static encodeString(str: string): Buffer;
757
+ static decodeU32(buf: Buffer, offset?: number): number;
758
+ static decodeU64(buf: Buffer, offset?: number): bigint;
759
+ static decodeString(buf: Buffer, offset?: number): { value: string; bytesRead: number };
760
+ }