@otoplo/wallet-common 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/index.d.ts +2278 -0
  4. package/dist/index.js +2005 -0
  5. package/dist/index.js.map +1 -0
  6. package/package.json +56 -0
  7. package/src/index.ts +5 -0
  8. package/src/persistence/datastore/db.ts +47 -0
  9. package/src/persistence/datastore/index.ts +2 -0
  10. package/src/persistence/datastore/kv.ts +129 -0
  11. package/src/persistence/index.ts +2 -0
  12. package/src/persistence/wallet-db.ts +251 -0
  13. package/src/services/asset.ts +220 -0
  14. package/src/services/cache.ts +54 -0
  15. package/src/services/discovery.ts +110 -0
  16. package/src/services/index.ts +8 -0
  17. package/src/services/key.ts +55 -0
  18. package/src/services/rostrum.ts +214 -0
  19. package/src/services/session.ts +225 -0
  20. package/src/services/transaction.ts +388 -0
  21. package/src/services/tx-transformer.ts +244 -0
  22. package/src/services/wallet.ts +650 -0
  23. package/src/state/hooks.ts +45 -0
  24. package/src/state/index.ts +3 -0
  25. package/src/state/slices/auth.ts +28 -0
  26. package/src/state/slices/dapp.ts +32 -0
  27. package/src/state/slices/index.ts +6 -0
  28. package/src/state/slices/loader.ts +31 -0
  29. package/src/state/slices/notifications.ts +44 -0
  30. package/src/state/slices/status.ts +70 -0
  31. package/src/state/slices/wallet.ts +112 -0
  32. package/src/state/store.ts +24 -0
  33. package/src/types/dapp.types.ts +21 -0
  34. package/src/types/db.types.ts +142 -0
  35. package/src/types/index.ts +5 -0
  36. package/src/types/notification.types.ts +13 -0
  37. package/src/types/rostrum.types.ts +161 -0
  38. package/src/types/wallet.types.ts +62 -0
  39. package/src/utils/asset.ts +103 -0
  40. package/src/utils/common.ts +159 -0
  41. package/src/utils/enums.ts +22 -0
  42. package/src/utils/index.ts +7 -0
  43. package/src/utils/keypath.ts +15 -0
  44. package/src/utils/price.ts +40 -0
  45. package/src/utils/seed.ts +57 -0
  46. package/src/utils/vault.ts +39 -0
@@ -0,0 +1,2278 @@
1
+ import { AddressType } from 'libnexa-ts';
2
+ import { AsyncThunk } from '@reduxjs/toolkit';
3
+ import { AsyncThunkConfig } from '@reduxjs/toolkit';
4
+ import { CaseReducerActions } from '@reduxjs/toolkit';
5
+ import { DAppInfo } from 'wallet-comms-sdk';
6
+ import { DAppProvider } from 'wallet-comms-sdk';
7
+ import { HDPrivateKey } from 'libnexa-ts';
8
+ import { PayloadAction } from '@reduxjs/toolkit';
9
+ import { PublicKey } from 'libnexa-ts';
10
+ import { Reducer } from 'redux';
11
+ import { RequestResponse } from '@otoplo/electrum-client';
12
+ import { Script } from 'libnexa-ts';
13
+ import { ScriptElement } from 'libnexa-ts';
14
+ import { SessionDetails } from 'wallet-comms-sdk';
15
+ import { Transaction } from 'libnexa-ts';
16
+ import { TransportScheme } from '@otoplo/electrum-client';
17
+
18
+ export declare interface Account {
19
+ id: number;
20
+ name: string;
21
+ address: string;
22
+ balance: Balance;
23
+ tokensBalance: Record<string, Balance>;
24
+ tokens: AssetEntity[];
25
+ sessions: Record<string, SessionInfo>;
26
+ }
27
+
28
+ export declare interface AccountDTO {
29
+ id: number;
30
+ name: string;
31
+ address: string;
32
+ height: number;
33
+ hidden: number;
34
+ statusHash: string;
35
+ balance: Balance;
36
+ tokensBalance: Record<string, Balance>;
37
+ type: AccountType;
38
+ }
39
+
40
+ export declare interface AccountEntity {
41
+ id: number;
42
+ name: string;
43
+ address: string;
44
+ height: number;
45
+ hidden: number;
46
+ statusHash: string;
47
+ balance: string;
48
+ tokensBalance: string;
49
+ }
50
+
51
+ export declare enum AccountType {
52
+ MAIN = 0,
53
+ VAULT = 1,
54
+ DAPP = 2
55
+ }
56
+
57
+ export declare interface AddressDTO {
58
+ address: string;
59
+ space: number;
60
+ idx: number;
61
+ used: boolean;
62
+ height: number;
63
+ statusHash: string;
64
+ balance: Balance;
65
+ tokensBalance: Record<string, Balance>;
66
+ type: AccountType;
67
+ }
68
+
69
+ export declare interface AddressEntity {
70
+ address: string;
71
+ space: number;
72
+ idx: number;
73
+ used: boolean;
74
+ height: number;
75
+ statusHash: string;
76
+ balance: string;
77
+ tokensBalance: string;
78
+ }
79
+
80
+ export declare interface AddressKey {
81
+ keyPath: string;
82
+ address: string;
83
+ balance: Balance;
84
+ tokensBalance: Record<string, Balance>;
85
+ }
86
+
87
+ declare interface AddSessionPayload {
88
+ accountId: number;
89
+ sessionInfo: SessionInfo;
90
+ }
91
+
92
+ export declare interface AppNotification {
93
+ id: string;
94
+ type: 'wallet' | 'web3';
95
+ title: string;
96
+ message?: string;
97
+ createdAt: number;
98
+ action?: NotificationAction;
99
+ }
100
+
101
+ export declare interface AssetEntity {
102
+ accountId: number;
103
+ tokenIdHex: string;
104
+ type: AssetType;
105
+ addedTime: number;
106
+ }
107
+
108
+ export declare interface AssetInfo {
109
+ token: string;
110
+ tokenIdHex: string;
111
+ decimals: number;
112
+ name?: string;
113
+ ticker?: string;
114
+ iconUrl?: string;
115
+ }
116
+
117
+ export declare interface AssetMovement {
118
+ address: string;
119
+ nexaAmount: string;
120
+ assetId: string;
121
+ assetAmount: string;
122
+ }
123
+
124
+ export declare class AssetService {
125
+ private readonly walletDb;
126
+ private readonly rostrumService;
127
+ private readonly walletCache;
128
+ constructor(walletDb: WalletDB, rostrumService: RostrumService, walletCache: WalletCache);
129
+ getTokenInfo(token: string, checkCache?: boolean): Promise<TokenEntity | undefined>;
130
+ isNftToken(token: string): Promise<boolean>;
131
+ getAssetInfo(token: string): Promise<AssetInfo | undefined>;
132
+ handleNftReceive(accountId: number, tokenIdHex: string, time: number): Promise<void>;
133
+ private saveNft;
134
+ fetchAndSaveTokens(accountId: number, tokenBalances: Record<string, Balance>): Promise<void>;
135
+ syncNfts(accountId: number, tokensBalance: Record<string, Balance>): Promise<void>;
136
+ }
137
+
138
+ export declare interface AssetTransactionEntity {
139
+ accountId: number;
140
+ assetId: string;
141
+ txIdem: string;
142
+ time: number;
143
+ }
144
+
145
+ export declare enum AssetType {
146
+ TOKEN = "token",
147
+ NFT = "nft"
148
+ }
149
+
150
+ export declare const authActions: CaseReducerActions< {
151
+ setWalletExist: (state: {
152
+ isWalletExist: boolean;
153
+ isAuthorized: boolean;
154
+ }, action: PayloadAction<boolean>) => void;
155
+ setAuthorized: (state: {
156
+ isWalletExist: boolean;
157
+ isAuthorized: boolean;
158
+ }, action: PayloadAction<boolean>) => void;
159
+ }, "auth">;
160
+
161
+ export declare const authReducer: Reducer<AuthState>;
162
+
163
+ export declare interface AuthState {
164
+ isWalletExist: boolean;
165
+ isAuthorized: boolean;
166
+ }
167
+
168
+ export declare interface Balance {
169
+ confirmed: string | number;
170
+ unconfirmed: string | number;
171
+ }
172
+
173
+ export declare interface BlockTip {
174
+ height: number;
175
+ hex: string;
176
+ }
177
+
178
+ export declare function capitalizeFirstLetter(str: string): string;
179
+
180
+ export declare const currencies: string[];
181
+
182
+ declare type Currency = keyof typeof currencySymbols;
183
+
184
+ declare const currencySymbols: {
185
+ readonly usd: "$";
186
+ readonly eur: "€";
187
+ readonly gbp: "£";
188
+ readonly cny: "¥";
189
+ readonly jpy: "¥";
190
+ readonly aud: "A$";
191
+ readonly cad: "C$";
192
+ readonly chf: "Fr";
193
+ };
194
+
195
+ export declare function currentTimestamp(): number;
196
+
197
+ export declare const dappModalActions: CaseReducerActions< {
198
+ showRequest(state: {
199
+ modalType: SessionRequestType | null;
200
+ currentRequest: {
201
+ type: SessionRequestType;
202
+ accountId: number;
203
+ sessionId: string;
204
+ request: any;
205
+ } | null;
206
+ }, action: PayloadAction<DappRpcRequest>): void;
207
+ clear(state: {
208
+ modalType: SessionRequestType | null;
209
+ currentRequest: {
210
+ type: SessionRequestType;
211
+ accountId: number;
212
+ sessionId: string;
213
+ request: any;
214
+ } | null;
215
+ }): void;
216
+ }, "dappModal">;
217
+
218
+ export declare const dappModalReducer: Reducer<DappModalState>;
219
+
220
+ export declare interface DappModalState {
221
+ modalType: SessionRequestType | null;
222
+ currentRequest: DappRpcRequest | null;
223
+ }
224
+
225
+ export declare interface DappRpcRequest {
226
+ type: SessionRequestType;
227
+ accountId: number;
228
+ sessionId: string;
229
+ request: any;
230
+ }
231
+
232
+ export declare type DBEvent = {
233
+ type: 'tx_refresh';
234
+ } | {
235
+ type: 'nft_refresh';
236
+ } | {
237
+ type: 'token_added';
238
+ accountId: number;
239
+ token: AssetEntity;
240
+ } | {
241
+ type: 'token_removed';
242
+ accountId: number;
243
+ tokenId: string;
244
+ } | {
245
+ type: 'nft_deleted';
246
+ id: string;
247
+ };
248
+
249
+ export declare interface DBStore {
250
+ clearData(): Promise<void>;
251
+ initSchema(): Promise<boolean>;
252
+ upsertTransaction(txEntry: TransactionEntity): Promise<void>;
253
+ upsertAssetTransaction(assetTx: AssetTransactionEntity): Promise<void>;
254
+ getTransactions(account: number, tokenId?: string): Promise<TransactionEntity[] | undefined>;
255
+ getPageTransactions(account: number, pageNum: number, pageSize: number, tokenId?: string): Promise<TransactionEntity[] | undefined>;
256
+ countTransactions(account: number, tokenId?: string): Promise<number>;
257
+ clearTransactions(account: number): Promise<void>;
258
+ upsertToken(token: TokenEntity): Promise<void>;
259
+ getTokens(account: number): Promise<AssetEntity[] | undefined>;
260
+ getToken(id: string): Promise<TokenEntity | undefined>;
261
+ deleteToken(id: string): Promise<void>;
262
+ countNfts(account: number): Promise<number>;
263
+ upsertNft(nft: NftEntity): Promise<void>;
264
+ getNfts(account: number, pageNum: number, pageSize: number): Promise<AssetEntity[] | undefined>;
265
+ getNft(id: string): Promise<NftEntity | undefined>;
266
+ deleteNft(id: string): Promise<void>;
267
+ isNftExist(id: string): Promise<boolean>;
268
+ upsertAsset(asset: AssetEntity): Promise<void>;
269
+ deleteAsset(account: number, id: string): Promise<void>;
270
+ countAssetsById(id: string): Promise<number>;
271
+ isAssetExistForAccount(account: number, id: string): Promise<boolean>;
272
+ upsertAccount(account: AccountEntity): Promise<void>;
273
+ getAccounts(): Promise<AccountEntity[]>;
274
+ countAccounts(): Promise<number>;
275
+ updateAccountName(account: number, name: string): Promise<void>;
276
+ upsertSession(session: SessionEntity): Promise<void>;
277
+ getSessionsByAccount(accountId: number): Promise<SessionEntity[]>;
278
+ deleteSession(sessionId: string): Promise<void>;
279
+ upsertAddress(address: AddressEntity): Promise<void>;
280
+ getReceiveAddresses(): Promise<AddressEntity[]>;
281
+ getChangeAddresses(): Promise<AddressEntity[]>;
282
+ countAddresses(): Promise<number>;
283
+ getVaults(): Promise<VaultEntity[]>;
284
+ upsertVault(vault: VaultEntity): Promise<void>;
285
+ }
286
+
287
+ export declare type DBUpdateCallback = (event: DBEvent) => void;
288
+
289
+ export declare function encryptMnemonic(phrase: string, password: string): Promise<string>;
290
+
291
+ export declare function estimateDateByFutureBlock(current: number, future: number): string;
292
+
293
+ export declare function fetchAssetBlob(url: string): Promise<Uint8Array>;
294
+
295
+ export declare function fetchAssetDoc(url: string): Promise<any>;
296
+
297
+ export declare function fetchNiftyNFT(id: string): Promise<Uint8Array>;
298
+
299
+ export declare const fetchPrice: AsyncThunk<Record<string, Price>, void, AsyncThunkConfig>;
300
+
301
+ export declare function generateNewMnemonic(size?: 12 | 24): string;
302
+
303
+ export declare function generateVaultAddress(pubKey: PublicKey, args: number[]): string | undefined;
304
+
305
+ export declare function generateVaultConstraint(pubKey: PublicKey): Script;
306
+
307
+ export declare function generateVaultVisibleArgs(args: number[]): ScriptElement[];
308
+
309
+ export declare function getAddressBuffer(address: string): Uint8Array;
310
+
311
+ export declare function getCurrencySymbol(currency: Currency): string;
312
+
313
+ export declare function getExplorerUrl(): string;
314
+
315
+ export declare function getFileMediaType(filename: string): 'video' | 'audio' | 'image' | 'unknown';
316
+
317
+ export declare function getFileMimeType(filename: string): string;
318
+
319
+ export declare function getNexaPrices(): Promise<Record<string, number>>;
320
+
321
+ export declare function getNiftyToken(): TokenEntity;
322
+
323
+ export declare function getVaultConstraintHash(pubKey: PublicKey): Uint8Array;
324
+
325
+ export declare function getVaultTemplate(): Script;
326
+
327
+ export declare function getVaultTemplateHash(): Uint8Array;
328
+
329
+ export declare interface IFirstUse {
330
+ block_hash: string;
331
+ block_height: number;
332
+ height: number;
333
+ tx_hash: string;
334
+ }
335
+
336
+ export declare interface IListUnspentRecord {
337
+ has_token: boolean;
338
+ height: number;
339
+ outpoint_hash: string;
340
+ tx_hash: string;
341
+ tx_pos: number;
342
+ value: number;
343
+ }
344
+
345
+ export declare function initializePrices(): Record<string, Price>;
346
+
347
+ export declare interface IScriptPubKey {
348
+ addresses: string[];
349
+ argHash: string;
350
+ asm: string;
351
+ group: string;
352
+ groupAuthority: string | number;
353
+ groupQuantity: string | number;
354
+ hex: string;
355
+ scriptHash: string;
356
+ token_id_hex?: string;
357
+ type: string;
358
+ }
359
+
360
+ export declare interface IScriptSig {
361
+ asm: string;
362
+ hex: string;
363
+ }
364
+
365
+ export declare function isGenesisHashValid(hash: string): boolean;
366
+
367
+ export declare function isMnemonicValid(mnemonic: string): boolean;
368
+
369
+ export declare function isNiftySubgroup(group: string): boolean;
370
+
371
+ export declare function isNullOrEmpty(arg?: string | any[] | null): arg is undefined | [] | null | '';
372
+
373
+ export declare interface ISpent {
374
+ height: number;
375
+ tx_hash: string;
376
+ tx_pos: number;
377
+ }
378
+
379
+ export declare function isTestnet(): boolean;
380
+
381
+ export declare function isValidNexaAddress(address: string, type?: AddressType): boolean;
382
+
383
+ export declare interface ITokenGenesis {
384
+ decimal_places?: number;
385
+ document_hash?: string;
386
+ document_url?: string;
387
+ group: string;
388
+ height: number;
389
+ name?: string;
390
+ op_return?: string;
391
+ ticker?: string;
392
+ token_id_hex: string;
393
+ txid: string;
394
+ txidem: string;
395
+ op_return_id: number;
396
+ }
397
+
398
+ export declare interface ITokenListUnspent {
399
+ cursor?: any;
400
+ unspent: ITokenUtxo[];
401
+ }
402
+
403
+ export declare interface ITokensBalance {
404
+ cursor?: any;
405
+ confirmed: Record<string, string | number>;
406
+ unconfirmed: Record<string, string | number>;
407
+ }
408
+
409
+ export declare interface ITokenUtxo {
410
+ group: string;
411
+ height: number;
412
+ outpoint_hash: string;
413
+ token_amount: number | string;
414
+ token_id_hex: string;
415
+ tx_hash: string;
416
+ tx_pos: number;
417
+ value: number;
418
+ }
419
+
420
+ export declare interface ITransaction {
421
+ blockhash: string;
422
+ blocktime: number;
423
+ confirmations: number;
424
+ fee: number;
425
+ fee_satoshi: number;
426
+ hash: string;
427
+ height: number;
428
+ hex: string;
429
+ locktime: number;
430
+ size: number;
431
+ time: number;
432
+ txid: string;
433
+ txidem: string;
434
+ version: number;
435
+ vin: ITXInput[];
436
+ vout: ITXOutput[];
437
+ }
438
+
439
+ export declare interface ITXHistory {
440
+ fee?: number;
441
+ height: number;
442
+ tx_hash: string;
443
+ }
444
+
445
+ export declare interface ITXInput {
446
+ outpoint: string;
447
+ scriptSig: IScriptSig;
448
+ sequence: number;
449
+ value: number;
450
+ value_satoshi: string | number;
451
+ addresses: string[];
452
+ group: string;
453
+ groupAuthority: string | number;
454
+ groupQuantity: string | number;
455
+ token_id_hex?: string;
456
+ }
457
+
458
+ export declare interface ITXOutput {
459
+ n: number;
460
+ outpoint_hash: string;
461
+ scriptPubKey: IScriptPubKey;
462
+ type: number;
463
+ value: number;
464
+ value_satoshi: string | number;
465
+ }
466
+
467
+ export declare interface IUtxo {
468
+ addresses: string[];
469
+ amount: number;
470
+ group: string;
471
+ group_authority: string | number;
472
+ group_quantity: string | number;
473
+ height: number;
474
+ scripthash: string;
475
+ scriptpubkey: string;
476
+ spent: ISpent;
477
+ status: string;
478
+ template_argumenthash: string;
479
+ template_scripthash: string;
480
+ token_id_hex: string;
481
+ tx_hash: string;
482
+ tx_idem: string;
483
+ tx_pos: number;
484
+ }
485
+
486
+ export declare class KeyManager {
487
+ private seed;
488
+ private masterKey;
489
+ private accountKeys;
490
+ private walletKeys;
491
+ init(mnemonic: string | Uint8Array): void;
492
+ reset(): void;
493
+ private getAccountKey;
494
+ getKey(keyPath: string | KeyPath): HDPrivateKey;
495
+ }
496
+
497
+ export declare interface KeyPath {
498
+ account: AccountType;
499
+ type: KeySpace;
500
+ index: number;
501
+ }
502
+
503
+ export declare function keyPathToString(account: AccountType, type: KeySpace, index: number): string;
504
+
505
+ export declare enum KeySpace {
506
+ RECEIVE = 0,
507
+ CHANGE = 1
508
+ }
509
+
510
+ export declare abstract class KVStore {
511
+ abstract getValue(key: string): Promise<string | null>;
512
+ abstract setValue(key: string, value: string): Promise<void>;
513
+ abstract removeValue(key: string): Promise<void>;
514
+ abstract clearData(): Promise<void>;
515
+ protected getPrefix(): string;
516
+ getEncryptedSeed(): Promise<string | null>;
517
+ saveEncryptedSeed(seed: string): Promise<void>;
518
+ getVersionCode(): Promise<string | null>;
519
+ setVersionCode(code: string): Promise<void>;
520
+ getReleaseNumber(): Promise<string | null>;
521
+ setReleaseNumber(release: string): Promise<void>;
522
+ getRostrumParams(): Promise<RostrumParams | undefined>;
523
+ saveRostrumParams(params: RostrumParams): Promise<void>;
524
+ removeRostrumParams(): Promise<void>;
525
+ setHideZeroTokenConfig(hide: boolean): Promise<void>;
526
+ getHideZeroTokenConfig(): Promise<boolean>;
527
+ setHideZeroVaultsConfig(hide: boolean): Promise<void>;
528
+ getHideZeroVaultsConfig(): Promise<boolean>;
529
+ getSelectedCurrency(): Promise<string>;
530
+ setSelectedCurrency(currency: string): Promise<void>;
531
+ getUseBiometric(): Promise<boolean>;
532
+ setUseBiometric(useBiometric: boolean): Promise<void>;
533
+ getRequireAuth(): Promise<boolean>;
534
+ setRequireAuth(requireAuth: boolean): Promise<void>;
535
+ getReleaseNotesTime(): Promise<number | undefined>;
536
+ setReleaseNotesTime(time: string): Promise<void>;
537
+ getIsTestnet(): Promise<boolean>;
538
+ setIsTestnet(isTestnet: boolean): Promise<void>;
539
+ getAutoLockSeconds(): Promise<number>;
540
+ setAutoLockSeconds(autoLock: number): Promise<void>;
541
+ }
542
+
543
+ export declare const loaderActions: CaseReducerActions< {
544
+ setLoader: (state: {
545
+ counter: number;
546
+ loading: boolean;
547
+ text?: string | undefined;
548
+ }, action: PayloadAction<Omit<LoaderState, "counter">>) => void;
549
+ }, "loader">;
550
+
551
+ export declare const loaderReducer: Reducer<LoaderState>;
552
+
553
+ export declare interface LoaderState {
554
+ counter: number;
555
+ loading: boolean;
556
+ text?: string;
557
+ }
558
+
559
+ export declare const MAIN_WALLET_ID = -1;
560
+
561
+ export declare const MAX_INT64 = 9223372036854775807n;
562
+
563
+ declare type MethodHandler = {
564
+ resolve: (value: any) => void;
565
+ reject: (value: any) => void;
566
+ };
567
+
568
+ export declare interface MovementDetails {
569
+ asset?: AssetInfo;
570
+ amount: bigint;
571
+ }
572
+
573
+ export declare interface NftEntity {
574
+ token: string;
575
+ tokenIdHex: string;
576
+ parentGroup: string;
577
+ source: string;
578
+ collection: string;
579
+ }
580
+
581
+ export declare interface NftPreview {
582
+ infoJson: string;
583
+ image: string;
584
+ }
585
+
586
+ export declare type NotificationAction = {
587
+ type: 'DAPP_REQUEST';
588
+ account: number;
589
+ sessionId: string;
590
+ payload: string;
591
+ } | {
592
+ type: 'DISPATCH';
593
+ actionType: string;
594
+ payload?: any;
595
+ } | {
596
+ type: 'NONE';
597
+ };
598
+
599
+ export declare const notificationsActions: CaseReducerActions< {
600
+ addNotification: (state: {
601
+ wallet: {
602
+ [x: string]: {
603
+ id: string;
604
+ type: "wallet" | "web3";
605
+ title: string;
606
+ message?: string | undefined;
607
+ createdAt: number;
608
+ action?: {
609
+ type: "DAPP_REQUEST";
610
+ account: number;
611
+ sessionId: string;
612
+ payload: string;
613
+ } | {
614
+ type: "DISPATCH";
615
+ actionType: string;
616
+ payload?: any;
617
+ } | {
618
+ type: "NONE";
619
+ } | undefined;
620
+ };
621
+ };
622
+ web3: {
623
+ [x: string]: {
624
+ id: string;
625
+ type: "wallet" | "web3";
626
+ title: string;
627
+ message?: string | undefined;
628
+ createdAt: number;
629
+ action?: {
630
+ type: "DAPP_REQUEST";
631
+ account: number;
632
+ sessionId: string;
633
+ payload: string;
634
+ } | {
635
+ type: "DISPATCH";
636
+ actionType: string;
637
+ payload?: any;
638
+ } | {
639
+ type: "NONE";
640
+ } | undefined;
641
+ };
642
+ };
643
+ }, action: PayloadAction<AppNotification>) => void;
644
+ removeNotification: (state: {
645
+ wallet: {
646
+ [x: string]: {
647
+ id: string;
648
+ type: "wallet" | "web3";
649
+ title: string;
650
+ message?: string | undefined;
651
+ createdAt: number;
652
+ action?: {
653
+ type: "DAPP_REQUEST";
654
+ account: number;
655
+ sessionId: string;
656
+ payload: string;
657
+ } | {
658
+ type: "DISPATCH";
659
+ actionType: string;
660
+ payload?: any;
661
+ } | {
662
+ type: "NONE";
663
+ } | undefined;
664
+ };
665
+ };
666
+ web3: {
667
+ [x: string]: {
668
+ id: string;
669
+ type: "wallet" | "web3";
670
+ title: string;
671
+ message?: string | undefined;
672
+ createdAt: number;
673
+ action?: {
674
+ type: "DAPP_REQUEST";
675
+ account: number;
676
+ sessionId: string;
677
+ payload: string;
678
+ } | {
679
+ type: "DISPATCH";
680
+ actionType: string;
681
+ payload?: any;
682
+ } | {
683
+ type: "NONE";
684
+ } | undefined;
685
+ };
686
+ };
687
+ }, action: PayloadAction<string>) => void;
688
+ clearAll: (state: {
689
+ wallet: {
690
+ [x: string]: {
691
+ id: string;
692
+ type: "wallet" | "web3";
693
+ title: string;
694
+ message?: string | undefined;
695
+ createdAt: number;
696
+ action?: {
697
+ type: "DAPP_REQUEST";
698
+ account: number;
699
+ sessionId: string;
700
+ payload: string;
701
+ } | {
702
+ type: "DISPATCH";
703
+ actionType: string;
704
+ payload?: any;
705
+ } | {
706
+ type: "NONE";
707
+ } | undefined;
708
+ };
709
+ };
710
+ web3: {
711
+ [x: string]: {
712
+ id: string;
713
+ type: "wallet" | "web3";
714
+ title: string;
715
+ message?: string | undefined;
716
+ createdAt: number;
717
+ action?: {
718
+ type: "DAPP_REQUEST";
719
+ account: number;
720
+ sessionId: string;
721
+ payload: string;
722
+ } | {
723
+ type: "DISPATCH";
724
+ actionType: string;
725
+ payload?: any;
726
+ } | {
727
+ type: "NONE";
728
+ } | undefined;
729
+ };
730
+ };
731
+ }, action: PayloadAction<"wallet" | "web3" | "all">) => void;
732
+ }, "notifications">;
733
+
734
+ export declare const notificationsReducer: Reducer<NotificationsState>;
735
+
736
+ export declare interface NotificationsState {
737
+ wallet: Record<string, AppNotification>;
738
+ web3: Record<string, AppNotification>;
739
+ }
740
+
741
+ export declare function parseTokenDataUrl(data?: string): string | null;
742
+
743
+ export declare interface Price {
744
+ value: number;
745
+ change: number;
746
+ }
747
+
748
+ declare interface RemoveSessionPayload {
749
+ accountId: number;
750
+ sessionId: string;
751
+ }
752
+
753
+ export declare interface RostrumParams {
754
+ scheme: TransportScheme;
755
+ host: string;
756
+ port: number;
757
+ label: string;
758
+ }
759
+
760
+ export declare class RostrumService {
761
+ private readonly kvStore;
762
+ private client?;
763
+ constructor(kvStore: KVStore);
764
+ getFeatures(): Promise<ServerFeatures>;
765
+ getBlockTip(): Promise<BlockTip>;
766
+ getBalance(address: string): Promise<Balance>;
767
+ getTransactionsHistory(address: string, fromHeight?: number): Promise<ITXHistory[]>;
768
+ getFirstUse(address: string): Promise<IFirstUse>;
769
+ isAddressUsed(address: string): Promise<boolean>;
770
+ getTransaction(id: string, verbose?: boolean): Promise<ITransaction>;
771
+ getUtxo(outpoint: string): Promise<IUtxo>;
772
+ getNexaUtxos(address: string): Promise<IListUnspentRecord[]>;
773
+ getTokenUtxos(address: string, token: string): Promise<ITokenUtxo[]>;
774
+ getTokensBalance(address: string): Promise<Record<string, Balance>>;
775
+ getTokenGenesis(token: string): Promise<ITokenGenesis>;
776
+ broadcast(txHex: string): Promise<string>;
777
+ subscribeHeaders(handler: (block: number) => void): Promise<Error | RequestResponse>;
778
+ subscribeAddress(address: string, handler: (data: unknown) => void): Promise<Error | RequestResponse>;
779
+ getLatency(): Promise<number>;
780
+ connect(params?: RostrumParams): Promise<void>;
781
+ disconnect(force?: boolean): Promise<boolean>;
782
+ private execute;
783
+ private waitForConnection;
784
+ getCurrentInstance(): Promise<RostrumParams>;
785
+ static getPredefinedInstances(): RostrumParams[];
786
+ }
787
+
788
+ export declare interface ServerFeatures {
789
+ genesis_hash: string;
790
+ server_version: string;
791
+ }
792
+
793
+ export declare interface SessionEntity {
794
+ sessionId: string;
795
+ accountId: number;
796
+ uri: string;
797
+ }
798
+
799
+ export declare type SessionEvent = {
800
+ type: 'session_added';
801
+ accountId: number;
802
+ sessionInfo: SessionInfo;
803
+ } | {
804
+ type: 'session_removed';
805
+ accountId: number;
806
+ sessionId: string;
807
+ } | {
808
+ type: 'sessions_cleared';
809
+ accountId: number;
810
+ } | {
811
+ type: 'new_notification';
812
+ notification: AppNotification;
813
+ } | {
814
+ type: 'new_request';
815
+ request: DappRpcRequest;
816
+ };
817
+
818
+ export declare interface SessionInfo {
819
+ details: SessionDetails;
820
+ appInfo: DAppInfo;
821
+ }
822
+
823
+ export declare class SessionManager {
824
+ private readonly walletDb;
825
+ private readonly keyManager;
826
+ private readonly providers;
827
+ private readonly handlers;
828
+ private removeOnClose;
829
+ private updateCallback?;
830
+ private constructor();
831
+ onUpdate(callback: SessionUpdateCallback): void;
832
+ private notify;
833
+ getHandler(request: string): MethodHandler | undefined;
834
+ add(account: AccountDTO, provider: DAppProvider, sessionInfo: SessionInfo): void;
835
+ remove(accountId: number, sessionId: string): void;
836
+ reload(accounts: Map<number, AccountDTO>): Promise<void>;
837
+ clear(): void;
838
+ revoke(accountId: number, sessionId: string): Promise<void>;
839
+ replayMessage(accountId: number, sessionId: string, payload: string): Promise<void>;
840
+ private registerHandlers;
841
+ }
842
+
843
+ export declare enum SessionRequestType {
844
+ SignMessage = "signMessage",
845
+ AddToken = "addToken",
846
+ SignTransaction = "signTransaction",
847
+ SendTransaction = "sendTransaction"
848
+ }
849
+
850
+ export declare type SessionUpdateCallback = (event: SessionEvent) => void;
851
+
852
+ export declare const sharedReducers: {
853
+ loader: Reducer<LoaderState>;
854
+ dapp: Reducer<DappModalState>;
855
+ status: Reducer<StatusState>;
856
+ wallet: Reducer<WalletState>;
857
+ auth: Reducer<AuthState>;
858
+ notifications: Reducer<NotificationsState>;
859
+ };
860
+
861
+ export declare type SharedState = {
862
+ loader: ReturnType<typeof loaderReducer>;
863
+ dapp: ReturnType<typeof dappModalReducer>;
864
+ status: ReturnType<typeof statusReducer>;
865
+ wallet: ReturnType<typeof walletReducer>;
866
+ auth: ReturnType<typeof authReducer>;
867
+ notifications: ReturnType<typeof notificationsReducer>;
868
+ };
869
+
870
+ export declare const statusActions: CaseReducerActions< {
871
+ setHeight: (state: {
872
+ status: "Online" | "Offline";
873
+ height: number;
874
+ price: {
875
+ [x: string]: {
876
+ value: number;
877
+ change: number;
878
+ };
879
+ };
880
+ hasNetwork: boolean;
881
+ isSuspended: boolean;
882
+ }, action: PayloadAction<number>) => void;
883
+ setOffline: (state: {
884
+ status: "Online" | "Offline";
885
+ height: number;
886
+ price: {
887
+ [x: string]: {
888
+ value: number;
889
+ change: number;
890
+ };
891
+ };
892
+ hasNetwork: boolean;
893
+ isSuspended: boolean;
894
+ }) => void;
895
+ setHasNetwork: (state: {
896
+ status: "Online" | "Offline";
897
+ height: number;
898
+ price: {
899
+ [x: string]: {
900
+ value: number;
901
+ change: number;
902
+ };
903
+ };
904
+ hasNetwork: boolean;
905
+ isSuspended: boolean;
906
+ }, action: PayloadAction<boolean>) => void;
907
+ setIsSuspended: (state: {
908
+ status: "Online" | "Offline";
909
+ height: number;
910
+ price: {
911
+ [x: string]: {
912
+ value: number;
913
+ change: number;
914
+ };
915
+ };
916
+ hasNetwork: boolean;
917
+ isSuspended: boolean;
918
+ }, action: PayloadAction<boolean>) => void;
919
+ }, "status">;
920
+
921
+ export declare const statusReducer: Reducer<StatusState>;
922
+
923
+ export declare interface StatusState {
924
+ status: "Online" | "Offline";
925
+ height: number;
926
+ price: Record<string, Price>;
927
+ hasNetwork: boolean;
928
+ isSuspended: boolean;
929
+ }
930
+
931
+ export declare function stringToKeyPath(path: string): KeyPath;
932
+
933
+ export declare function sumBalance(balances: Balance[]): Balance;
934
+
935
+ export declare function sumTokensBalance(balances: Record<string, Balance>[]): Record<string, Balance>;
936
+
937
+ export declare function tokenAmountToAssetAmount(amount?: string | number | bigint): string;
938
+
939
+ export declare interface TokenEntity {
940
+ token: string;
941
+ tokenIdHex: string;
942
+ name: string;
943
+ ticker: string;
944
+ iconUrl: string;
945
+ decimals: number;
946
+ parentGroup: string;
947
+ }
948
+
949
+ export declare function tokenHexToAddr(token: string): string;
950
+
951
+ export declare function tokenIdToHex(token: string): string;
952
+
953
+ export declare interface TransactionDetails {
954
+ tx: Transaction;
955
+ send: MovementDetails[];
956
+ receive: MovementDetails[];
957
+ }
958
+
959
+ export declare interface TransactionDTO {
960
+ accountId: number;
961
+ txIdem: string;
962
+ txId: string;
963
+ time: number;
964
+ height: number;
965
+ type: TransactionType;
966
+ fee: string;
967
+ othersOutputs: AssetMovement[];
968
+ myOutputs: AssetMovement[];
969
+ myInputs: AssetMovement[];
970
+ }
971
+
972
+ export declare interface TransactionEntity {
973
+ accountId: number;
974
+ txIdem: string;
975
+ txId: string;
976
+ time: number;
977
+ height: number;
978
+ type: TransactionType;
979
+ fee: string;
980
+ othersOutputs: string;
981
+ myOutputs: string;
982
+ myInputs: string;
983
+ }
984
+
985
+ export declare class TransactionService {
986
+ private readonly rostrumService;
987
+ private readonly keyManager;
988
+ private readonly walletDb;
989
+ private readonly MAX_INPUTS_OUTPUTS;
990
+ constructor(rostrumService: RostrumService, keysManager: KeyManager, walletDb: WalletDB);
991
+ broadcastTransaction(txHex: string): Promise<string>;
992
+ fetchTransactionsHistory(address: string, fromHeight: number): Promise<{
993
+ txs: ITXHistory[];
994
+ lastHeight: number;
995
+ }>;
996
+ fetchVaultTransactions(address: string): Promise<TransactionDTO[]>;
997
+ classifyAndSaveTransaction(accountId: number, txHash: string, myAddresses: string[]): Promise<void>;
998
+ private classifyTransaction;
999
+ buildAndSignTransferTransaction(from: AddressKey[], toAddr: string, toChange: string, amount: string, feeFromAmount?: boolean, token?: string, feePerByte?: number, data?: string): Promise<Transaction>;
1000
+ buildAndSignConsolidateTransaction(from: AddressKey[], toChange: string, templateData?: TxTemplateData): Promise<Transaction>;
1001
+ private prepareTransaction;
1002
+ private populateNexaInputsAndChange;
1003
+ private populateTokenInputsAndChange;
1004
+ private finalizeTransaction;
1005
+ printTransactionJson(tx?: Transaction | null): string;
1006
+ }
1007
+
1008
+ export declare class TransactionTransformer {
1009
+ private readonly rostrumService;
1010
+ private readonly keyManager;
1011
+ private readonly assetService;
1012
+ constructor(rostrumService: RostrumService, keyManager: KeyManager, assetService: AssetService);
1013
+ transformRawTransaction(hex: string, addressKey: AddressKey): Promise<TransactionDetails>;
1014
+ private createContext;
1015
+ private processInputs;
1016
+ private processInput;
1017
+ private processOutputs;
1018
+ private signInputs;
1019
+ private validateAndGetSubscript;
1020
+ private processSignatureCoverage;
1021
+ private checkSignatureCoverage;
1022
+ private processAssetMovements;
1023
+ private processAssetMovement;
1024
+ }
1025
+
1026
+ export declare type TransactionType = 'receive' | 'send' | 'swap' | 'self';
1027
+
1028
+ export declare function transformTokenIconUrl(icon: string, documentUrl: string): string;
1029
+
1030
+ export declare function truncateStringMiddle(str?: string, maxLength?: number): string;
1031
+
1032
+ export declare interface TxOptions {
1033
+ isConsolidate?: boolean;
1034
+ templateData?: TxTemplateData;
1035
+ feeFromAmount?: boolean;
1036
+ }
1037
+
1038
+ export declare interface TxTemplateData {
1039
+ templateScript: Script;
1040
+ constraintScript: Script;
1041
+ visibleArgs: any[];
1042
+ publicKey: PublicKey;
1043
+ }
1044
+
1045
+ export declare const useAccount: (id: number) => Account;
1046
+
1047
+ export declare const useAllNotifications: () => AppNotification[];
1048
+
1049
+ export declare const useAuth: () => AuthState;
1050
+
1051
+ export declare const useBlockHeight: () => number;
1052
+
1053
+ export declare const useDAppSession: (account: number, session: string) => SessionInfo;
1054
+
1055
+ export declare const useLastAccountId: () => number;
1056
+
1057
+ export declare const useMainReceiveAddress: (account: number) => string;
1058
+
1059
+ export declare const useSelectedAccount: () => number;
1060
+
1061
+ export declare const useTokenBalance: (account: number, tokenIdHex: string) => Balance;
1062
+
1063
+ export declare const useVaults: () => Record<string, VaultInfo>;
1064
+
1065
+ export declare const useWalletBalance: (account: number) => Balance;
1066
+
1067
+ export declare const useWalletNotifications: () => AppNotification[];
1068
+
1069
+ export declare const useWeb3Notifications: () => AppNotification[];
1070
+
1071
+ export declare function validateAndDecryptMnemonic(encSeed: string, password: string): Promise<string | boolean>;
1072
+
1073
+ export declare const VAULT_FIRST_BLOCK = 274710;
1074
+
1075
+ export declare const VAULT_SCRIPT_PREFIX = "0014461ad25081cb0119d034385ff154c8d3ad6bdd76";
1076
+
1077
+ export declare interface VaultDTO {
1078
+ address: string;
1079
+ idx: number;
1080
+ block: number;
1081
+ height: number;
1082
+ statusHash: string;
1083
+ balance: Balance;
1084
+ tokensBalance: Record<string, Balance>;
1085
+ type: AccountType;
1086
+ }
1087
+
1088
+ export declare interface VaultEntity {
1089
+ address: string;
1090
+ idx: number;
1091
+ block: number;
1092
+ height: number;
1093
+ statusHash: string;
1094
+ balance: string;
1095
+ tokensBalance: string;
1096
+ }
1097
+
1098
+ export declare interface VaultInfo {
1099
+ address: string;
1100
+ balance: Balance;
1101
+ block: number;
1102
+ index: number;
1103
+ }
1104
+
1105
+ export declare const walletActions: CaseReducerActions< {
1106
+ setInitLoad: (state: {
1107
+ isAuthorized: boolean;
1108
+ selectedAccount: number;
1109
+ accounts: {
1110
+ [x: number]: {
1111
+ id: number;
1112
+ name: string;
1113
+ address: string;
1114
+ balance: {
1115
+ confirmed: string | number;
1116
+ unconfirmed: string | number;
1117
+ };
1118
+ tokensBalance: {
1119
+ [x: string]: {
1120
+ confirmed: string | number;
1121
+ unconfirmed: string | number;
1122
+ };
1123
+ };
1124
+ tokens: {
1125
+ accountId: number;
1126
+ tokenIdHex: string;
1127
+ type: AssetType;
1128
+ addedTime: number;
1129
+ }[];
1130
+ sessions: {
1131
+ [x: string]: {
1132
+ details: {
1133
+ version: string;
1134
+ relayUrl: string;
1135
+ secret: string;
1136
+ sessionId: string;
1137
+ };
1138
+ appInfo: {
1139
+ name: string;
1140
+ url: string;
1141
+ description?: string | undefined;
1142
+ icon?: string | undefined;
1143
+ };
1144
+ };
1145
+ };
1146
+ };
1147
+ };
1148
+ vaults: {
1149
+ [x: string]: {
1150
+ address: string;
1151
+ balance: {
1152
+ confirmed: string | number;
1153
+ unconfirmed: string | number;
1154
+ };
1155
+ block: number;
1156
+ index: number;
1157
+ };
1158
+ };
1159
+ sync: boolean;
1160
+ initLoad: boolean;
1161
+ txUpdateTrigger: number;
1162
+ nftsUpdateTrigger: number;
1163
+ }, action: PayloadAction<boolean>) => void;
1164
+ setSelectedAccount: (state: {
1165
+ isAuthorized: boolean;
1166
+ selectedAccount: number;
1167
+ accounts: {
1168
+ [x: number]: {
1169
+ id: number;
1170
+ name: string;
1171
+ address: string;
1172
+ balance: {
1173
+ confirmed: string | number;
1174
+ unconfirmed: string | number;
1175
+ };
1176
+ tokensBalance: {
1177
+ [x: string]: {
1178
+ confirmed: string | number;
1179
+ unconfirmed: string | number;
1180
+ };
1181
+ };
1182
+ tokens: {
1183
+ accountId: number;
1184
+ tokenIdHex: string;
1185
+ type: AssetType;
1186
+ addedTime: number;
1187
+ }[];
1188
+ sessions: {
1189
+ [x: string]: {
1190
+ details: {
1191
+ version: string;
1192
+ relayUrl: string;
1193
+ secret: string;
1194
+ sessionId: string;
1195
+ };
1196
+ appInfo: {
1197
+ name: string;
1198
+ url: string;
1199
+ description?: string | undefined;
1200
+ icon?: string | undefined;
1201
+ };
1202
+ };
1203
+ };
1204
+ };
1205
+ };
1206
+ vaults: {
1207
+ [x: string]: {
1208
+ address: string;
1209
+ balance: {
1210
+ confirmed: string | number;
1211
+ unconfirmed: string | number;
1212
+ };
1213
+ block: number;
1214
+ index: number;
1215
+ };
1216
+ };
1217
+ sync: boolean;
1218
+ initLoad: boolean;
1219
+ txUpdateTrigger: number;
1220
+ nftsUpdateTrigger: number;
1221
+ }, action: PayloadAction<number>) => void;
1222
+ setSync: (state: {
1223
+ isAuthorized: boolean;
1224
+ selectedAccount: number;
1225
+ accounts: {
1226
+ [x: number]: {
1227
+ id: number;
1228
+ name: string;
1229
+ address: string;
1230
+ balance: {
1231
+ confirmed: string | number;
1232
+ unconfirmed: string | number;
1233
+ };
1234
+ tokensBalance: {
1235
+ [x: string]: {
1236
+ confirmed: string | number;
1237
+ unconfirmed: string | number;
1238
+ };
1239
+ };
1240
+ tokens: {
1241
+ accountId: number;
1242
+ tokenIdHex: string;
1243
+ type: AssetType;
1244
+ addedTime: number;
1245
+ }[];
1246
+ sessions: {
1247
+ [x: string]: {
1248
+ details: {
1249
+ version: string;
1250
+ relayUrl: string;
1251
+ secret: string;
1252
+ sessionId: string;
1253
+ };
1254
+ appInfo: {
1255
+ name: string;
1256
+ url: string;
1257
+ description?: string | undefined;
1258
+ icon?: string | undefined;
1259
+ };
1260
+ };
1261
+ };
1262
+ };
1263
+ };
1264
+ vaults: {
1265
+ [x: string]: {
1266
+ address: string;
1267
+ balance: {
1268
+ confirmed: string | number;
1269
+ unconfirmed: string | number;
1270
+ };
1271
+ block: number;
1272
+ index: number;
1273
+ };
1274
+ };
1275
+ sync: boolean;
1276
+ initLoad: boolean;
1277
+ txUpdateTrigger: number;
1278
+ nftsUpdateTrigger: number;
1279
+ }, action: PayloadAction<boolean>) => void;
1280
+ setVault: (state: {
1281
+ isAuthorized: boolean;
1282
+ selectedAccount: number;
1283
+ accounts: {
1284
+ [x: number]: {
1285
+ id: number;
1286
+ name: string;
1287
+ address: string;
1288
+ balance: {
1289
+ confirmed: string | number;
1290
+ unconfirmed: string | number;
1291
+ };
1292
+ tokensBalance: {
1293
+ [x: string]: {
1294
+ confirmed: string | number;
1295
+ unconfirmed: string | number;
1296
+ };
1297
+ };
1298
+ tokens: {
1299
+ accountId: number;
1300
+ tokenIdHex: string;
1301
+ type: AssetType;
1302
+ addedTime: number;
1303
+ }[];
1304
+ sessions: {
1305
+ [x: string]: {
1306
+ details: {
1307
+ version: string;
1308
+ relayUrl: string;
1309
+ secret: string;
1310
+ sessionId: string;
1311
+ };
1312
+ appInfo: {
1313
+ name: string;
1314
+ url: string;
1315
+ description?: string | undefined;
1316
+ icon?: string | undefined;
1317
+ };
1318
+ };
1319
+ };
1320
+ };
1321
+ };
1322
+ vaults: {
1323
+ [x: string]: {
1324
+ address: string;
1325
+ balance: {
1326
+ confirmed: string | number;
1327
+ unconfirmed: string | number;
1328
+ };
1329
+ block: number;
1330
+ index: number;
1331
+ };
1332
+ };
1333
+ sync: boolean;
1334
+ initLoad: boolean;
1335
+ txUpdateTrigger: number;
1336
+ nftsUpdateTrigger: number;
1337
+ }, action: PayloadAction<VaultInfo>) => void;
1338
+ setVaultBalance: (state: {
1339
+ isAuthorized: boolean;
1340
+ selectedAccount: number;
1341
+ accounts: {
1342
+ [x: number]: {
1343
+ id: number;
1344
+ name: string;
1345
+ address: string;
1346
+ balance: {
1347
+ confirmed: string | number;
1348
+ unconfirmed: string | number;
1349
+ };
1350
+ tokensBalance: {
1351
+ [x: string]: {
1352
+ confirmed: string | number;
1353
+ unconfirmed: string | number;
1354
+ };
1355
+ };
1356
+ tokens: {
1357
+ accountId: number;
1358
+ tokenIdHex: string;
1359
+ type: AssetType;
1360
+ addedTime: number;
1361
+ }[];
1362
+ sessions: {
1363
+ [x: string]: {
1364
+ details: {
1365
+ version: string;
1366
+ relayUrl: string;
1367
+ secret: string;
1368
+ sessionId: string;
1369
+ };
1370
+ appInfo: {
1371
+ name: string;
1372
+ url: string;
1373
+ description?: string | undefined;
1374
+ icon?: string | undefined;
1375
+ };
1376
+ };
1377
+ };
1378
+ };
1379
+ };
1380
+ vaults: {
1381
+ [x: string]: {
1382
+ address: string;
1383
+ balance: {
1384
+ confirmed: string | number;
1385
+ unconfirmed: string | number;
1386
+ };
1387
+ block: number;
1388
+ index: number;
1389
+ };
1390
+ };
1391
+ sync: boolean;
1392
+ initLoad: boolean;
1393
+ txUpdateTrigger: number;
1394
+ nftsUpdateTrigger: number;
1395
+ }, action: PayloadAction<{
1396
+ address: string;
1397
+ balance: Balance;
1398
+ }>) => void;
1399
+ setAccount: (state: {
1400
+ isAuthorized: boolean;
1401
+ selectedAccount: number;
1402
+ accounts: {
1403
+ [x: number]: {
1404
+ id: number;
1405
+ name: string;
1406
+ address: string;
1407
+ balance: {
1408
+ confirmed: string | number;
1409
+ unconfirmed: string | number;
1410
+ };
1411
+ tokensBalance: {
1412
+ [x: string]: {
1413
+ confirmed: string | number;
1414
+ unconfirmed: string | number;
1415
+ };
1416
+ };
1417
+ tokens: {
1418
+ accountId: number;
1419
+ tokenIdHex: string;
1420
+ type: AssetType;
1421
+ addedTime: number;
1422
+ }[];
1423
+ sessions: {
1424
+ [x: string]: {
1425
+ details: {
1426
+ version: string;
1427
+ relayUrl: string;
1428
+ secret: string;
1429
+ sessionId: string;
1430
+ };
1431
+ appInfo: {
1432
+ name: string;
1433
+ url: string;
1434
+ description?: string | undefined;
1435
+ icon?: string | undefined;
1436
+ };
1437
+ };
1438
+ };
1439
+ };
1440
+ };
1441
+ vaults: {
1442
+ [x: string]: {
1443
+ address: string;
1444
+ balance: {
1445
+ confirmed: string | number;
1446
+ unconfirmed: string | number;
1447
+ };
1448
+ block: number;
1449
+ index: number;
1450
+ };
1451
+ };
1452
+ sync: boolean;
1453
+ initLoad: boolean;
1454
+ txUpdateTrigger: number;
1455
+ nftsUpdateTrigger: number;
1456
+ }, action: PayloadAction<Account>) => void;
1457
+ setMainAddress: (state: {
1458
+ isAuthorized: boolean;
1459
+ selectedAccount: number;
1460
+ accounts: {
1461
+ [x: number]: {
1462
+ id: number;
1463
+ name: string;
1464
+ address: string;
1465
+ balance: {
1466
+ confirmed: string | number;
1467
+ unconfirmed: string | number;
1468
+ };
1469
+ tokensBalance: {
1470
+ [x: string]: {
1471
+ confirmed: string | number;
1472
+ unconfirmed: string | number;
1473
+ };
1474
+ };
1475
+ tokens: {
1476
+ accountId: number;
1477
+ tokenIdHex: string;
1478
+ type: AssetType;
1479
+ addedTime: number;
1480
+ }[];
1481
+ sessions: {
1482
+ [x: string]: {
1483
+ details: {
1484
+ version: string;
1485
+ relayUrl: string;
1486
+ secret: string;
1487
+ sessionId: string;
1488
+ };
1489
+ appInfo: {
1490
+ name: string;
1491
+ url: string;
1492
+ description?: string | undefined;
1493
+ icon?: string | undefined;
1494
+ };
1495
+ };
1496
+ };
1497
+ };
1498
+ };
1499
+ vaults: {
1500
+ [x: string]: {
1501
+ address: string;
1502
+ balance: {
1503
+ confirmed: string | number;
1504
+ unconfirmed: string | number;
1505
+ };
1506
+ block: number;
1507
+ index: number;
1508
+ };
1509
+ };
1510
+ sync: boolean;
1511
+ initLoad: boolean;
1512
+ txUpdateTrigger: number;
1513
+ nftsUpdateTrigger: number;
1514
+ }, action: PayloadAction<string>) => void;
1515
+ setAccountBalance: (state: {
1516
+ isAuthorized: boolean;
1517
+ selectedAccount: number;
1518
+ accounts: {
1519
+ [x: number]: {
1520
+ id: number;
1521
+ name: string;
1522
+ address: string;
1523
+ balance: {
1524
+ confirmed: string | number;
1525
+ unconfirmed: string | number;
1526
+ };
1527
+ tokensBalance: {
1528
+ [x: string]: {
1529
+ confirmed: string | number;
1530
+ unconfirmed: string | number;
1531
+ };
1532
+ };
1533
+ tokens: {
1534
+ accountId: number;
1535
+ tokenIdHex: string;
1536
+ type: AssetType;
1537
+ addedTime: number;
1538
+ }[];
1539
+ sessions: {
1540
+ [x: string]: {
1541
+ details: {
1542
+ version: string;
1543
+ relayUrl: string;
1544
+ secret: string;
1545
+ sessionId: string;
1546
+ };
1547
+ appInfo: {
1548
+ name: string;
1549
+ url: string;
1550
+ description?: string | undefined;
1551
+ icon?: string | undefined;
1552
+ };
1553
+ };
1554
+ };
1555
+ };
1556
+ };
1557
+ vaults: {
1558
+ [x: string]: {
1559
+ address: string;
1560
+ balance: {
1561
+ confirmed: string | number;
1562
+ unconfirmed: string | number;
1563
+ };
1564
+ block: number;
1565
+ index: number;
1566
+ };
1567
+ };
1568
+ sync: boolean;
1569
+ initLoad: boolean;
1570
+ txUpdateTrigger: number;
1571
+ nftsUpdateTrigger: number;
1572
+ }, action: PayloadAction<{
1573
+ id: number;
1574
+ balance: Balance;
1575
+ tokensBalance: Record<string, Balance>;
1576
+ }>) => void;
1577
+ setAccountName: (state: {
1578
+ isAuthorized: boolean;
1579
+ selectedAccount: number;
1580
+ accounts: {
1581
+ [x: number]: {
1582
+ id: number;
1583
+ name: string;
1584
+ address: string;
1585
+ balance: {
1586
+ confirmed: string | number;
1587
+ unconfirmed: string | number;
1588
+ };
1589
+ tokensBalance: {
1590
+ [x: string]: {
1591
+ confirmed: string | number;
1592
+ unconfirmed: string | number;
1593
+ };
1594
+ };
1595
+ tokens: {
1596
+ accountId: number;
1597
+ tokenIdHex: string;
1598
+ type: AssetType;
1599
+ addedTime: number;
1600
+ }[];
1601
+ sessions: {
1602
+ [x: string]: {
1603
+ details: {
1604
+ version: string;
1605
+ relayUrl: string;
1606
+ secret: string;
1607
+ sessionId: string;
1608
+ };
1609
+ appInfo: {
1610
+ name: string;
1611
+ url: string;
1612
+ description?: string | undefined;
1613
+ icon?: string | undefined;
1614
+ };
1615
+ };
1616
+ };
1617
+ };
1618
+ };
1619
+ vaults: {
1620
+ [x: string]: {
1621
+ address: string;
1622
+ balance: {
1623
+ confirmed: string | number;
1624
+ unconfirmed: string | number;
1625
+ };
1626
+ block: number;
1627
+ index: number;
1628
+ };
1629
+ };
1630
+ sync: boolean;
1631
+ initLoad: boolean;
1632
+ txUpdateTrigger: number;
1633
+ nftsUpdateTrigger: number;
1634
+ }, action: PayloadAction<{
1635
+ id: number;
1636
+ name: string;
1637
+ }>) => void;
1638
+ setTokens: (state: {
1639
+ isAuthorized: boolean;
1640
+ selectedAccount: number;
1641
+ accounts: {
1642
+ [x: number]: {
1643
+ id: number;
1644
+ name: string;
1645
+ address: string;
1646
+ balance: {
1647
+ confirmed: string | number;
1648
+ unconfirmed: string | number;
1649
+ };
1650
+ tokensBalance: {
1651
+ [x: string]: {
1652
+ confirmed: string | number;
1653
+ unconfirmed: string | number;
1654
+ };
1655
+ };
1656
+ tokens: {
1657
+ accountId: number;
1658
+ tokenIdHex: string;
1659
+ type: AssetType;
1660
+ addedTime: number;
1661
+ }[];
1662
+ sessions: {
1663
+ [x: string]: {
1664
+ details: {
1665
+ version: string;
1666
+ relayUrl: string;
1667
+ secret: string;
1668
+ sessionId: string;
1669
+ };
1670
+ appInfo: {
1671
+ name: string;
1672
+ url: string;
1673
+ description?: string | undefined;
1674
+ icon?: string | undefined;
1675
+ };
1676
+ };
1677
+ };
1678
+ };
1679
+ };
1680
+ vaults: {
1681
+ [x: string]: {
1682
+ address: string;
1683
+ balance: {
1684
+ confirmed: string | number;
1685
+ unconfirmed: string | number;
1686
+ };
1687
+ block: number;
1688
+ index: number;
1689
+ };
1690
+ };
1691
+ sync: boolean;
1692
+ initLoad: boolean;
1693
+ txUpdateTrigger: number;
1694
+ nftsUpdateTrigger: number;
1695
+ }, action: PayloadAction<{
1696
+ id: number;
1697
+ assets: AssetEntity[];
1698
+ }>) => void;
1699
+ addToken: (state: {
1700
+ isAuthorized: boolean;
1701
+ selectedAccount: number;
1702
+ accounts: {
1703
+ [x: number]: {
1704
+ id: number;
1705
+ name: string;
1706
+ address: string;
1707
+ balance: {
1708
+ confirmed: string | number;
1709
+ unconfirmed: string | number;
1710
+ };
1711
+ tokensBalance: {
1712
+ [x: string]: {
1713
+ confirmed: string | number;
1714
+ unconfirmed: string | number;
1715
+ };
1716
+ };
1717
+ tokens: {
1718
+ accountId: number;
1719
+ tokenIdHex: string;
1720
+ type: AssetType;
1721
+ addedTime: number;
1722
+ }[];
1723
+ sessions: {
1724
+ [x: string]: {
1725
+ details: {
1726
+ version: string;
1727
+ relayUrl: string;
1728
+ secret: string;
1729
+ sessionId: string;
1730
+ };
1731
+ appInfo: {
1732
+ name: string;
1733
+ url: string;
1734
+ description?: string | undefined;
1735
+ icon?: string | undefined;
1736
+ };
1737
+ };
1738
+ };
1739
+ };
1740
+ };
1741
+ vaults: {
1742
+ [x: string]: {
1743
+ address: string;
1744
+ balance: {
1745
+ confirmed: string | number;
1746
+ unconfirmed: string | number;
1747
+ };
1748
+ block: number;
1749
+ index: number;
1750
+ };
1751
+ };
1752
+ sync: boolean;
1753
+ initLoad: boolean;
1754
+ txUpdateTrigger: number;
1755
+ nftsUpdateTrigger: number;
1756
+ }, action: PayloadAction<{
1757
+ id: number;
1758
+ asset: AssetEntity;
1759
+ }>) => void;
1760
+ removeToken: (state: {
1761
+ isAuthorized: boolean;
1762
+ selectedAccount: number;
1763
+ accounts: {
1764
+ [x: number]: {
1765
+ id: number;
1766
+ name: string;
1767
+ address: string;
1768
+ balance: {
1769
+ confirmed: string | number;
1770
+ unconfirmed: string | number;
1771
+ };
1772
+ tokensBalance: {
1773
+ [x: string]: {
1774
+ confirmed: string | number;
1775
+ unconfirmed: string | number;
1776
+ };
1777
+ };
1778
+ tokens: {
1779
+ accountId: number;
1780
+ tokenIdHex: string;
1781
+ type: AssetType;
1782
+ addedTime: number;
1783
+ }[];
1784
+ sessions: {
1785
+ [x: string]: {
1786
+ details: {
1787
+ version: string;
1788
+ relayUrl: string;
1789
+ secret: string;
1790
+ sessionId: string;
1791
+ };
1792
+ appInfo: {
1793
+ name: string;
1794
+ url: string;
1795
+ description?: string | undefined;
1796
+ icon?: string | undefined;
1797
+ };
1798
+ };
1799
+ };
1800
+ };
1801
+ };
1802
+ vaults: {
1803
+ [x: string]: {
1804
+ address: string;
1805
+ balance: {
1806
+ confirmed: string | number;
1807
+ unconfirmed: string | number;
1808
+ };
1809
+ block: number;
1810
+ index: number;
1811
+ };
1812
+ };
1813
+ sync: boolean;
1814
+ initLoad: boolean;
1815
+ txUpdateTrigger: number;
1816
+ nftsUpdateTrigger: number;
1817
+ }, action: PayloadAction<{
1818
+ id: number;
1819
+ tokenId: string;
1820
+ }>) => void;
1821
+ refreshTxs: (state: {
1822
+ isAuthorized: boolean;
1823
+ selectedAccount: number;
1824
+ accounts: {
1825
+ [x: number]: {
1826
+ id: number;
1827
+ name: string;
1828
+ address: string;
1829
+ balance: {
1830
+ confirmed: string | number;
1831
+ unconfirmed: string | number;
1832
+ };
1833
+ tokensBalance: {
1834
+ [x: string]: {
1835
+ confirmed: string | number;
1836
+ unconfirmed: string | number;
1837
+ };
1838
+ };
1839
+ tokens: {
1840
+ accountId: number;
1841
+ tokenIdHex: string;
1842
+ type: AssetType;
1843
+ addedTime: number;
1844
+ }[];
1845
+ sessions: {
1846
+ [x: string]: {
1847
+ details: {
1848
+ version: string;
1849
+ relayUrl: string;
1850
+ secret: string;
1851
+ sessionId: string;
1852
+ };
1853
+ appInfo: {
1854
+ name: string;
1855
+ url: string;
1856
+ description?: string | undefined;
1857
+ icon?: string | undefined;
1858
+ };
1859
+ };
1860
+ };
1861
+ };
1862
+ };
1863
+ vaults: {
1864
+ [x: string]: {
1865
+ address: string;
1866
+ balance: {
1867
+ confirmed: string | number;
1868
+ unconfirmed: string | number;
1869
+ };
1870
+ block: number;
1871
+ index: number;
1872
+ };
1873
+ };
1874
+ sync: boolean;
1875
+ initLoad: boolean;
1876
+ txUpdateTrigger: number;
1877
+ nftsUpdateTrigger: number;
1878
+ }) => void;
1879
+ refreshNfts: (state: {
1880
+ isAuthorized: boolean;
1881
+ selectedAccount: number;
1882
+ accounts: {
1883
+ [x: number]: {
1884
+ id: number;
1885
+ name: string;
1886
+ address: string;
1887
+ balance: {
1888
+ confirmed: string | number;
1889
+ unconfirmed: string | number;
1890
+ };
1891
+ tokensBalance: {
1892
+ [x: string]: {
1893
+ confirmed: string | number;
1894
+ unconfirmed: string | number;
1895
+ };
1896
+ };
1897
+ tokens: {
1898
+ accountId: number;
1899
+ tokenIdHex: string;
1900
+ type: AssetType;
1901
+ addedTime: number;
1902
+ }[];
1903
+ sessions: {
1904
+ [x: string]: {
1905
+ details: {
1906
+ version: string;
1907
+ relayUrl: string;
1908
+ secret: string;
1909
+ sessionId: string;
1910
+ };
1911
+ appInfo: {
1912
+ name: string;
1913
+ url: string;
1914
+ description?: string | undefined;
1915
+ icon?: string | undefined;
1916
+ };
1917
+ };
1918
+ };
1919
+ };
1920
+ };
1921
+ vaults: {
1922
+ [x: string]: {
1923
+ address: string;
1924
+ balance: {
1925
+ confirmed: string | number;
1926
+ unconfirmed: string | number;
1927
+ };
1928
+ block: number;
1929
+ index: number;
1930
+ };
1931
+ };
1932
+ sync: boolean;
1933
+ initLoad: boolean;
1934
+ txUpdateTrigger: number;
1935
+ nftsUpdateTrigger: number;
1936
+ }) => void;
1937
+ addSession(state: {
1938
+ isAuthorized: boolean;
1939
+ selectedAccount: number;
1940
+ accounts: {
1941
+ [x: number]: {
1942
+ id: number;
1943
+ name: string;
1944
+ address: string;
1945
+ balance: {
1946
+ confirmed: string | number;
1947
+ unconfirmed: string | number;
1948
+ };
1949
+ tokensBalance: {
1950
+ [x: string]: {
1951
+ confirmed: string | number;
1952
+ unconfirmed: string | number;
1953
+ };
1954
+ };
1955
+ tokens: {
1956
+ accountId: number;
1957
+ tokenIdHex: string;
1958
+ type: AssetType;
1959
+ addedTime: number;
1960
+ }[];
1961
+ sessions: {
1962
+ [x: string]: {
1963
+ details: {
1964
+ version: string;
1965
+ relayUrl: string;
1966
+ secret: string;
1967
+ sessionId: string;
1968
+ };
1969
+ appInfo: {
1970
+ name: string;
1971
+ url: string;
1972
+ description?: string | undefined;
1973
+ icon?: string | undefined;
1974
+ };
1975
+ };
1976
+ };
1977
+ };
1978
+ };
1979
+ vaults: {
1980
+ [x: string]: {
1981
+ address: string;
1982
+ balance: {
1983
+ confirmed: string | number;
1984
+ unconfirmed: string | number;
1985
+ };
1986
+ block: number;
1987
+ index: number;
1988
+ };
1989
+ };
1990
+ sync: boolean;
1991
+ initLoad: boolean;
1992
+ txUpdateTrigger: number;
1993
+ nftsUpdateTrigger: number;
1994
+ }, action: PayloadAction<AddSessionPayload>): void;
1995
+ removeSession(state: {
1996
+ isAuthorized: boolean;
1997
+ selectedAccount: number;
1998
+ accounts: {
1999
+ [x: number]: {
2000
+ id: number;
2001
+ name: string;
2002
+ address: string;
2003
+ balance: {
2004
+ confirmed: string | number;
2005
+ unconfirmed: string | number;
2006
+ };
2007
+ tokensBalance: {
2008
+ [x: string]: {
2009
+ confirmed: string | number;
2010
+ unconfirmed: string | number;
2011
+ };
2012
+ };
2013
+ tokens: {
2014
+ accountId: number;
2015
+ tokenIdHex: string;
2016
+ type: AssetType;
2017
+ addedTime: number;
2018
+ }[];
2019
+ sessions: {
2020
+ [x: string]: {
2021
+ details: {
2022
+ version: string;
2023
+ relayUrl: string;
2024
+ secret: string;
2025
+ sessionId: string;
2026
+ };
2027
+ appInfo: {
2028
+ name: string;
2029
+ url: string;
2030
+ description?: string | undefined;
2031
+ icon?: string | undefined;
2032
+ };
2033
+ };
2034
+ };
2035
+ };
2036
+ };
2037
+ vaults: {
2038
+ [x: string]: {
2039
+ address: string;
2040
+ balance: {
2041
+ confirmed: string | number;
2042
+ unconfirmed: string | number;
2043
+ };
2044
+ block: number;
2045
+ index: number;
2046
+ };
2047
+ };
2048
+ sync: boolean;
2049
+ initLoad: boolean;
2050
+ txUpdateTrigger: number;
2051
+ nftsUpdateTrigger: number;
2052
+ }, action: PayloadAction<RemoveSessionPayload>): void;
2053
+ clearSessions(state: {
2054
+ isAuthorized: boolean;
2055
+ selectedAccount: number;
2056
+ accounts: {
2057
+ [x: number]: {
2058
+ id: number;
2059
+ name: string;
2060
+ address: string;
2061
+ balance: {
2062
+ confirmed: string | number;
2063
+ unconfirmed: string | number;
2064
+ };
2065
+ tokensBalance: {
2066
+ [x: string]: {
2067
+ confirmed: string | number;
2068
+ unconfirmed: string | number;
2069
+ };
2070
+ };
2071
+ tokens: {
2072
+ accountId: number;
2073
+ tokenIdHex: string;
2074
+ type: AssetType;
2075
+ addedTime: number;
2076
+ }[];
2077
+ sessions: {
2078
+ [x: string]: {
2079
+ details: {
2080
+ version: string;
2081
+ relayUrl: string;
2082
+ secret: string;
2083
+ sessionId: string;
2084
+ };
2085
+ appInfo: {
2086
+ name: string;
2087
+ url: string;
2088
+ description?: string | undefined;
2089
+ icon?: string | undefined;
2090
+ };
2091
+ };
2092
+ };
2093
+ };
2094
+ };
2095
+ vaults: {
2096
+ [x: string]: {
2097
+ address: string;
2098
+ balance: {
2099
+ confirmed: string | number;
2100
+ unconfirmed: string | number;
2101
+ };
2102
+ block: number;
2103
+ index: number;
2104
+ };
2105
+ };
2106
+ sync: boolean;
2107
+ initLoad: boolean;
2108
+ txUpdateTrigger: number;
2109
+ nftsUpdateTrigger: number;
2110
+ }, action: PayloadAction<{
2111
+ accountId: number;
2112
+ }>): void;
2113
+ }, "wallet">;
2114
+
2115
+ export declare class WalletCache {
2116
+ private readonly walletDb;
2117
+ private readonly tokens;
2118
+ private readonly nfts;
2119
+ constructor(walletDb: WalletDB);
2120
+ clear(): void;
2121
+ getTokenById(id: string): Promise<TokenEntity | undefined>;
2122
+ getNftById(id: string): Promise<NftEntity | undefined>;
2123
+ removeToken(id: string): void;
2124
+ removeNft(id: string): void;
2125
+ }
2126
+
2127
+ export declare class WalletDB {
2128
+ private readonly store;
2129
+ private updateCallback?;
2130
+ constructor(store: DBStore);
2131
+ onUpdate(callback: DBUpdateCallback): void;
2132
+ private notify;
2133
+ initSchema(): Promise<boolean>;
2134
+ clearData(): Promise<void>;
2135
+ addLocalTransaction(tx: TransactionEntity): Promise<void>;
2136
+ addAssetTransaction(assetTx: AssetTransactionEntity): Promise<void>;
2137
+ getLocalTransactions(account: number, tokenId?: string): Promise<TransactionEntity[] | undefined>;
2138
+ getPageLocalTransactions(account: number, pageNum: number, pageSize: number, tokenId?: string): Promise<TransactionEntity[] | undefined>;
2139
+ countLocalTransactions(account: number, tokenId?: string): Promise<number>;
2140
+ clearLocalTransactions(account: number): Promise<void>;
2141
+ saveToken(account: number, token: TokenEntity): Promise<void>;
2142
+ getLocalTokens(account: number): Promise<AssetEntity[] | undefined>;
2143
+ getToken(id: string): Promise<TokenEntity | undefined>;
2144
+ deleteToken(account: number, tokenId: string): Promise<void>;
2145
+ saveNft(asset: AssetEntity, nft: NftEntity): Promise<void>;
2146
+ getLocalNfts(account: number, pageNum: number, pageSize: number): Promise<AssetEntity[] | undefined>;
2147
+ getLocalNft(id: string): Promise<NftEntity | undefined>;
2148
+ deleteNft(account: number, tokenId: string, notify?: boolean): Promise<void>;
2149
+ countLocalNfts(account: number): Promise<number>;
2150
+ isNftExist(id: string): Promise<boolean>;
2151
+ saveAsset(asset: AssetEntity, notifyNft?: boolean): Promise<void>;
2152
+ removeAsset(account: number, id: string): Promise<void>;
2153
+ isAssetExistForAccount(account: number, id: string): Promise<boolean>;
2154
+ saveAccount(account: AccountDTO): Promise<void>;
2155
+ getAccounts(): Promise<AccountDTO[]>;
2156
+ countAccounts(): Promise<number>;
2157
+ updateAccountName(account: number, name: string): Promise<void>;
2158
+ saveSession(session: SessionEntity): Promise<void>;
2159
+ getAccountSessions(accountId: number): Promise<SessionEntity[]>;
2160
+ removeSession(sessionId: string): Promise<void>;
2161
+ saveAddress(address: AddressDTO): Promise<void>;
2162
+ getReceiveAddresses(): Promise<AddressDTO[]>;
2163
+ getChangeAddresses(): Promise<AddressDTO[]>;
2164
+ countAddresses(): Promise<number>;
2165
+ getVaults(): Promise<VaultDTO[]>;
2166
+ saveVault(vault: VaultDTO): Promise<void>;
2167
+ }
2168
+
2169
+ export declare type WalletEvent = {
2170
+ type: 'new_tip';
2171
+ tip: number;
2172
+ } | {
2173
+ type: 'new_account';
2174
+ account: Account;
2175
+ } | {
2176
+ type: 'new_vault';
2177
+ vault: VaultInfo;
2178
+ } | {
2179
+ type: 'discover_wallet';
2180
+ loading: boolean;
2181
+ } | {
2182
+ type: 'load_wallet';
2183
+ loading: boolean;
2184
+ } | {
2185
+ type: 'sync_wallet';
2186
+ loading: boolean;
2187
+ } | {
2188
+ type: 'account_balance_updated';
2189
+ accountId: number;
2190
+ balance: Balance;
2191
+ tokensBalance: Record<string, Balance>;
2192
+ } | {
2193
+ type: 'vault_balance_updated';
2194
+ address: string;
2195
+ balance: Balance;
2196
+ } | {
2197
+ type: 'main_address_updated';
2198
+ address: string;
2199
+ };
2200
+
2201
+ export declare class WalletManager {
2202
+ private readonly keyManager;
2203
+ private readonly kvStore;
2204
+ private readonly walletDb;
2205
+ private readonly rostrumService;
2206
+ private readonly assetService;
2207
+ private readonly transactionService;
2208
+ private readonly sessionManager;
2209
+ private static readonly GAP_LIMIT;
2210
+ private static readonly DEBOUNCE_MS;
2211
+ private addressResolvers;
2212
+ accounts: Map<number, AccountDTO>;
2213
+ accountsAddressToId: Map<string, number>;
2214
+ receiveAddresses: AddressDTO[];
2215
+ changeAddresses: AddressDTO[];
2216
+ vaults: Map<string, VaultDTO>;
2217
+ private pendingUpdates;
2218
+ private updateTimer?;
2219
+ private updateCallback?;
2220
+ private readonly discoveryService;
2221
+ constructor(keyManager: KeyManager, kvStore: KVStore, walletDb: WalletDB, rostrumService: RostrumService, assetService: AssetService, transactionService: TransactionService, sessionManager: SessionManager);
2222
+ onUpdate(callback: WalletUpdateCallback): void;
2223
+ private notify;
2224
+ private getAllAddresses;
2225
+ getMainAddresses(): AddressDTO[];
2226
+ getReceiveAddress(): string;
2227
+ getChangeAddress(accountId?: number): string;
2228
+ getUsedAddressKeys(accountId?: number): AddressKey[];
2229
+ reloadRostrum(params: RostrumParams): Promise<void>;
2230
+ initRostrum(): Promise<void>;
2231
+ initialize(): Promise<void>;
2232
+ private discoverWallet;
2233
+ private loadWallet;
2234
+ private initialSync;
2235
+ reconnectSync(): Promise<void>;
2236
+ private initState;
2237
+ private deriveAddresses;
2238
+ private deriveAccounts;
2239
+ private saveAddresses;
2240
+ private saveAccounts;
2241
+ private subscribeAddresses;
2242
+ private onSubscribeEvent;
2243
+ private registerUpdate;
2244
+ private processPendingUpdates;
2245
+ private postProcessWalletUpdate;
2246
+ private postProcessAccountUpdate;
2247
+ private fetchAndUpdateAddress;
2248
+ private fetchAndUpdateAccount;
2249
+ private fetchAndUpdateVault;
2250
+ private checkGapLimit;
2251
+ addNewAccount(id: number, name: string): Promise<void>;
2252
+ updateAccountName(id: number, name: string): Promise<void>;
2253
+ rescanAccount(id: number): void;
2254
+ getVaultNextIndex(): number;
2255
+ addNewVault(address: string, block: number, index: number): Promise<void>;
2256
+ private addVault;
2257
+ rescanVaults(): Promise<boolean>;
2258
+ private isVaultAddress;
2259
+ private isAccountAddress;
2260
+ private isMainAddress;
2261
+ }
2262
+
2263
+ export declare const walletReducer: Reducer<WalletState>;
2264
+
2265
+ export declare interface WalletState {
2266
+ isAuthorized: boolean;
2267
+ selectedAccount: number;
2268
+ accounts: Record<number, Account>;
2269
+ vaults: Record<string, VaultInfo>;
2270
+ sync: boolean;
2271
+ initLoad: boolean;
2272
+ txUpdateTrigger: number;
2273
+ nftsUpdateTrigger: number;
2274
+ }
2275
+
2276
+ export declare type WalletUpdateCallback = (event: WalletEvent) => void;
2277
+
2278
+ export { }