@arkade-os/sdk 0.3.13 → 0.4.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +586 -54
- package/dist/cjs/asset/assetGroup.js +141 -0
- package/dist/cjs/asset/assetId.js +88 -0
- package/dist/cjs/asset/assetInput.js +204 -0
- package/dist/cjs/asset/assetOutput.js +159 -0
- package/dist/cjs/asset/assetRef.js +82 -0
- package/dist/cjs/asset/index.js +24 -0
- package/dist/cjs/asset/metadata.js +172 -0
- package/dist/cjs/asset/packet.js +164 -0
- package/dist/cjs/asset/types.js +25 -0
- package/dist/cjs/asset/utils.js +105 -0
- package/dist/cjs/bip322/index.js +270 -0
- package/dist/cjs/contracts/arkcontract.js +148 -0
- package/dist/cjs/contracts/contractManager.js +436 -0
- package/dist/cjs/contracts/contractWatcher.js +567 -0
- package/dist/cjs/contracts/handlers/default.js +85 -0
- package/dist/cjs/contracts/handlers/delegate.js +89 -0
- package/dist/cjs/contracts/handlers/helpers.js +105 -0
- package/dist/cjs/contracts/handlers/index.js +19 -0
- package/dist/cjs/contracts/handlers/registry.js +89 -0
- package/dist/cjs/contracts/handlers/vhtlc.js +193 -0
- package/dist/cjs/contracts/index.js +41 -0
- package/dist/cjs/contracts/types.js +2 -0
- package/dist/cjs/forfeit.js +12 -8
- package/dist/cjs/identity/index.js +1 -0
- package/dist/cjs/identity/seedIdentity.js +255 -0
- package/dist/cjs/index.js +72 -14
- package/dist/cjs/intent/index.js +47 -11
- package/dist/cjs/providers/ark.js +7 -0
- package/dist/cjs/providers/delegator.js +66 -0
- package/dist/cjs/providers/expoIndexer.js +5 -0
- package/dist/cjs/providers/indexer.js +68 -1
- package/dist/cjs/providers/utils.js +1 -0
- package/dist/cjs/repositories/contractRepository.js +0 -103
- package/dist/cjs/repositories/inMemory/contractRepository.js +55 -0
- package/dist/cjs/repositories/inMemory/walletRepository.js +80 -0
- package/dist/cjs/repositories/index.js +16 -0
- package/dist/cjs/repositories/indexedDB/contractRepository.js +187 -0
- package/dist/cjs/repositories/indexedDB/db.js +19 -0
- package/dist/cjs/repositories/indexedDB/manager.js +97 -0
- package/dist/cjs/repositories/indexedDB/schema.js +159 -0
- package/dist/cjs/repositories/indexedDB/walletRepository.js +338 -0
- package/dist/cjs/repositories/indexedDB/websqlAdapter.js +144 -0
- package/dist/cjs/repositories/migrations/contractRepositoryImpl.js +127 -0
- package/dist/cjs/repositories/migrations/fromStorageAdapter.js +66 -0
- package/dist/cjs/repositories/migrations/walletRepositoryImpl.js +180 -0
- package/dist/cjs/repositories/realm/contractRepository.js +120 -0
- package/dist/cjs/repositories/realm/index.js +9 -0
- package/dist/cjs/repositories/realm/schemas.js +108 -0
- package/dist/cjs/repositories/realm/types.js +7 -0
- package/dist/cjs/repositories/realm/walletRepository.js +273 -0
- package/dist/cjs/repositories/serialization.js +49 -0
- package/dist/cjs/repositories/sqlite/contractRepository.js +139 -0
- package/dist/cjs/repositories/sqlite/index.js +7 -0
- package/dist/cjs/repositories/sqlite/types.js +2 -0
- package/dist/cjs/repositories/sqlite/walletRepository.js +328 -0
- package/dist/cjs/repositories/walletRepository.js +0 -169
- package/dist/cjs/script/base.js +54 -0
- package/dist/cjs/script/delegate.js +49 -0
- package/dist/cjs/storage/asyncStorage.js +4 -1
- package/dist/cjs/storage/fileSystem.js +3 -0
- package/dist/cjs/storage/inMemory.js +3 -0
- package/dist/cjs/storage/indexedDB.js +5 -1
- package/dist/cjs/storage/localStorage.js +3 -0
- package/dist/cjs/utils/arkTransaction.js +16 -0
- package/dist/cjs/utils/transactionHistory.js +50 -0
- package/dist/cjs/wallet/asset-manager.js +338 -0
- package/dist/cjs/wallet/asset.js +117 -0
- package/dist/cjs/wallet/batch.js +1 -1
- package/dist/cjs/wallet/delegator.js +235 -0
- package/dist/cjs/wallet/expo/background.js +133 -0
- package/dist/cjs/wallet/expo/index.js +9 -0
- package/dist/cjs/wallet/expo/wallet.js +231 -0
- package/dist/cjs/wallet/serviceWorker/wallet-message-handler.js +568 -0
- package/dist/cjs/wallet/serviceWorker/wallet.js +383 -102
- package/dist/cjs/wallet/utils.js +58 -0
- package/dist/cjs/wallet/validation.js +151 -0
- package/dist/cjs/wallet/vtxo-manager.js +8 -1
- package/dist/cjs/wallet/wallet.js +702 -260
- package/dist/cjs/worker/browser/service-worker-manager.js +82 -0
- package/dist/cjs/{wallet/serviceWorker → worker/browser}/utils.js +2 -1
- package/dist/cjs/worker/expo/asyncStorageTaskQueue.js +78 -0
- package/dist/cjs/worker/expo/index.js +12 -0
- package/dist/cjs/worker/expo/processors/contractPollProcessor.js +61 -0
- package/dist/cjs/worker/expo/processors/index.js +6 -0
- package/dist/cjs/worker/expo/taskQueue.js +41 -0
- package/dist/cjs/worker/expo/taskRunner.js +57 -0
- package/dist/cjs/worker/messageBus.js +252 -0
- package/dist/esm/asset/assetGroup.js +137 -0
- package/dist/esm/asset/assetId.js +84 -0
- package/dist/esm/asset/assetInput.js +199 -0
- package/dist/esm/asset/assetOutput.js +154 -0
- package/dist/esm/asset/assetRef.js +78 -0
- package/dist/esm/asset/index.js +8 -0
- package/dist/esm/asset/metadata.js +167 -0
- package/dist/esm/asset/packet.js +159 -0
- package/dist/esm/asset/types.js +22 -0
- package/dist/esm/asset/utils.js +99 -0
- package/dist/esm/bip322/index.js +267 -0
- package/dist/esm/contracts/arkcontract.js +141 -0
- package/dist/esm/contracts/contractManager.js +432 -0
- package/dist/esm/contracts/contractWatcher.js +563 -0
- package/dist/esm/contracts/handlers/default.js +82 -0
- package/dist/esm/contracts/handlers/delegate.js +86 -0
- package/dist/esm/contracts/handlers/helpers.js +66 -0
- package/dist/esm/contracts/handlers/index.js +12 -0
- package/dist/esm/contracts/handlers/registry.js +86 -0
- package/dist/esm/contracts/handlers/vhtlc.js +190 -0
- package/dist/esm/contracts/index.js +13 -0
- package/dist/esm/contracts/types.js +1 -0
- package/dist/esm/forfeit.js +11 -8
- package/dist/esm/identity/index.js +1 -0
- package/dist/esm/identity/seedIdentity.js +249 -0
- package/dist/esm/index.js +28 -15
- package/dist/esm/intent/index.js +44 -9
- package/dist/esm/providers/ark.js +7 -0
- package/dist/esm/providers/delegator.js +62 -0
- package/dist/esm/providers/expoIndexer.js +5 -0
- package/dist/esm/providers/indexer.js +68 -1
- package/dist/esm/providers/utils.js +1 -0
- package/dist/esm/repositories/contractRepository.js +1 -101
- package/dist/esm/repositories/inMemory/contractRepository.js +51 -0
- package/dist/esm/repositories/inMemory/walletRepository.js +76 -0
- package/dist/esm/repositories/index.js +8 -0
- package/dist/esm/repositories/indexedDB/contractRepository.js +183 -0
- package/dist/esm/repositories/indexedDB/db.js +4 -0
- package/dist/esm/repositories/indexedDB/manager.js +92 -0
- package/dist/esm/repositories/indexedDB/schema.js +155 -0
- package/dist/esm/repositories/indexedDB/walletRepository.js +334 -0
- package/dist/esm/repositories/indexedDB/websqlAdapter.js +138 -0
- package/dist/esm/repositories/migrations/contractRepositoryImpl.js +121 -0
- package/dist/esm/repositories/migrations/fromStorageAdapter.js +58 -0
- package/dist/esm/repositories/migrations/walletRepositoryImpl.js +176 -0
- package/dist/esm/repositories/realm/contractRepository.js +116 -0
- package/dist/esm/repositories/realm/index.js +3 -0
- package/dist/esm/repositories/realm/schemas.js +105 -0
- package/dist/esm/repositories/realm/types.js +6 -0
- package/dist/esm/repositories/realm/walletRepository.js +269 -0
- package/dist/esm/repositories/serialization.js +40 -0
- package/dist/esm/repositories/sqlite/contractRepository.js +135 -0
- package/dist/esm/repositories/sqlite/index.js +2 -0
- package/dist/esm/repositories/sqlite/types.js +1 -0
- package/dist/esm/repositories/sqlite/walletRepository.js +324 -0
- package/dist/esm/repositories/walletRepository.js +1 -167
- package/dist/esm/script/base.js +21 -1
- package/dist/esm/script/delegate.js +46 -0
- package/dist/esm/storage/asyncStorage.js +4 -1
- package/dist/esm/storage/fileSystem.js +3 -0
- package/dist/esm/storage/inMemory.js +3 -0
- package/dist/esm/storage/indexedDB.js +5 -1
- package/dist/esm/storage/localStorage.js +3 -0
- package/dist/esm/utils/arkTransaction.js +15 -0
- package/dist/esm/utils/transactionHistory.js +50 -0
- package/dist/esm/wallet/asset-manager.js +333 -0
- package/dist/esm/wallet/asset.js +111 -0
- package/dist/esm/wallet/batch.js +1 -1
- package/dist/esm/wallet/delegator.js +231 -0
- package/dist/esm/wallet/expo/background.js +128 -0
- package/dist/esm/wallet/expo/index.js +2 -0
- package/dist/esm/wallet/expo/wallet.js +194 -0
- package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +564 -0
- package/dist/esm/wallet/serviceWorker/wallet.js +382 -101
- package/dist/esm/wallet/utils.js +54 -0
- package/dist/esm/wallet/validation.js +139 -0
- package/dist/esm/wallet/vtxo-manager.js +8 -1
- package/dist/esm/wallet/wallet.js +704 -229
- package/dist/esm/worker/browser/service-worker-manager.js +76 -0
- package/dist/esm/{wallet/serviceWorker → worker/browser}/utils.js +2 -1
- package/dist/esm/worker/expo/asyncStorageTaskQueue.js +74 -0
- package/dist/esm/worker/expo/index.js +4 -0
- package/dist/esm/worker/expo/processors/contractPollProcessor.js +58 -0
- package/dist/esm/worker/expo/processors/index.js +1 -0
- package/dist/esm/worker/expo/taskQueue.js +37 -0
- package/dist/esm/worker/expo/taskRunner.js +54 -0
- package/dist/esm/worker/messageBus.js +248 -0
- package/dist/types/asset/assetGroup.d.ts +28 -0
- package/dist/types/asset/assetId.d.ts +19 -0
- package/dist/types/asset/assetInput.d.ts +46 -0
- package/dist/types/asset/assetOutput.d.ts +39 -0
- package/dist/types/asset/assetRef.d.ts +25 -0
- package/dist/types/asset/index.d.ts +8 -0
- package/dist/types/asset/metadata.d.ts +37 -0
- package/dist/types/asset/packet.d.ts +27 -0
- package/dist/types/asset/types.d.ts +18 -0
- package/dist/types/asset/utils.d.ts +21 -0
- package/dist/types/bip322/index.d.ts +55 -0
- package/dist/types/contracts/arkcontract.d.ts +101 -0
- package/dist/types/contracts/contractManager.d.ts +331 -0
- package/dist/types/contracts/contractWatcher.d.ts +192 -0
- package/dist/types/contracts/handlers/default.d.ts +19 -0
- package/dist/types/contracts/handlers/delegate.d.ts +21 -0
- package/dist/types/contracts/handlers/helpers.d.ts +18 -0
- package/dist/types/contracts/handlers/index.d.ts +7 -0
- package/dist/types/contracts/handlers/registry.d.ts +65 -0
- package/dist/types/contracts/handlers/vhtlc.d.ts +32 -0
- package/dist/types/contracts/index.d.ts +14 -0
- package/dist/types/contracts/types.d.ts +222 -0
- package/dist/types/forfeit.d.ts +2 -1
- package/dist/types/identity/index.d.ts +1 -0
- package/dist/types/identity/seedIdentity.d.ts +128 -0
- package/dist/types/index.d.ts +22 -12
- package/dist/types/intent/index.d.ts +15 -1
- package/dist/types/providers/ark.d.ts +11 -2
- package/dist/types/providers/delegator.d.ts +29 -0
- package/dist/types/providers/indexer.d.ts +11 -1
- package/dist/types/repositories/contractRepository.d.ts +30 -19
- package/dist/types/repositories/inMemory/contractRepository.d.ts +17 -0
- package/dist/types/repositories/inMemory/walletRepository.d.ts +26 -0
- package/dist/types/repositories/index.d.ts +7 -0
- package/dist/types/repositories/indexedDB/contractRepository.d.ts +21 -0
- package/dist/types/repositories/indexedDB/db.d.ts +4 -0
- package/dist/types/repositories/indexedDB/manager.d.ts +22 -0
- package/dist/types/repositories/indexedDB/schema.d.ts +8 -0
- package/dist/types/repositories/indexedDB/walletRepository.d.ts +25 -0
- package/dist/types/repositories/indexedDB/websqlAdapter.d.ts +49 -0
- package/dist/types/repositories/migrations/contractRepositoryImpl.d.ts +24 -0
- package/dist/types/repositories/migrations/fromStorageAdapter.d.ts +19 -0
- package/dist/types/repositories/migrations/walletRepositoryImpl.d.ts +27 -0
- package/dist/types/repositories/realm/contractRepository.d.ts +24 -0
- package/dist/types/repositories/realm/index.d.ts +4 -0
- package/dist/types/repositories/realm/schemas.d.ts +208 -0
- package/dist/types/repositories/realm/types.d.ts +16 -0
- package/dist/types/repositories/realm/walletRepository.d.ts +31 -0
- package/dist/types/repositories/serialization.d.ts +40 -0
- package/dist/types/repositories/sqlite/contractRepository.d.ts +33 -0
- package/dist/types/repositories/sqlite/index.d.ts +3 -0
- package/dist/types/repositories/sqlite/types.d.ts +18 -0
- package/dist/types/repositories/sqlite/walletRepository.d.ts +40 -0
- package/dist/types/repositories/walletRepository.d.ts +13 -24
- package/dist/types/script/base.d.ts +1 -0
- package/dist/types/script/delegate.d.ts +36 -0
- package/dist/types/storage/asyncStorage.d.ts +4 -0
- package/dist/types/storage/fileSystem.d.ts +3 -0
- package/dist/types/storage/inMemory.d.ts +3 -0
- package/dist/types/storage/index.d.ts +3 -0
- package/dist/types/storage/indexedDB.d.ts +3 -0
- package/dist/types/storage/localStorage.d.ts +3 -0
- package/dist/types/utils/arkTransaction.d.ts +6 -0
- package/dist/types/wallet/asset-manager.d.ts +78 -0
- package/dist/types/wallet/asset.d.ts +21 -0
- package/dist/types/wallet/batch.d.ts +1 -1
- package/dist/types/wallet/delegator.d.ts +24 -0
- package/dist/types/wallet/expo/background.d.ts +66 -0
- package/dist/types/wallet/expo/index.d.ts +4 -0
- package/dist/types/wallet/expo/wallet.d.ts +97 -0
- package/dist/types/wallet/index.d.ts +75 -2
- package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +366 -0
- package/dist/types/wallet/serviceWorker/wallet.d.ts +20 -11
- package/dist/types/wallet/utils.d.ts +12 -1
- package/dist/types/wallet/validation.d.ts +24 -0
- package/dist/types/wallet/wallet.d.ts +111 -17
- package/dist/types/worker/browser/service-worker-manager.d.ts +21 -0
- package/dist/types/{wallet/serviceWorker → worker/browser}/utils.d.ts +2 -1
- package/dist/types/worker/expo/asyncStorageTaskQueue.d.ts +46 -0
- package/dist/types/worker/expo/index.d.ts +7 -0
- package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +14 -0
- package/dist/types/worker/expo/processors/index.d.ts +1 -0
- package/dist/types/worker/expo/taskQueue.d.ts +50 -0
- package/dist/types/worker/expo/taskRunner.d.ts +42 -0
- package/dist/types/worker/messageBus.d.ts +109 -0
- package/package.json +69 -11
- package/dist/cjs/wallet/serviceWorker/request.js +0 -78
- package/dist/cjs/wallet/serviceWorker/response.js +0 -222
- package/dist/cjs/wallet/serviceWorker/worker.js +0 -655
- package/dist/esm/wallet/serviceWorker/request.js +0 -75
- package/dist/esm/wallet/serviceWorker/response.js +0 -219
- package/dist/esm/wallet/serviceWorker/worker.js +0 -651
- package/dist/types/wallet/serviceWorker/request.d.ts +0 -74
- package/dist/types/wallet/serviceWorker/response.d.ts +0 -123
- package/dist/types/wallet/serviceWorker/worker.d.ts +0 -53
|
@@ -4,17 +4,20 @@ import { ArkAddress } from "../script/address";
|
|
|
4
4
|
import { DefaultVtxo } from "../script/default";
|
|
5
5
|
import { Network, NetworkName } from "../networks";
|
|
6
6
|
import { OnchainProvider } from "../providers/onchain";
|
|
7
|
-
import {
|
|
7
|
+
import { ArkProvider, SettlementEvent, SignedIntent } from "../providers/ark";
|
|
8
8
|
import { SignerSession } from "../tree/signingSession";
|
|
9
9
|
import { Identity, ReadonlyIdentity } from "../identity";
|
|
10
|
-
import { ArkTransaction, Coin, ExtendedCoin, ExtendedVirtualCoin, GetVtxosFilter, IReadonlyWallet, IWallet, ReadonlyWalletConfig, SendBitcoinParams, SettleParams, VirtualCoin, WalletBalance, WalletConfig } from ".";
|
|
11
|
-
import { TapLeafScript } from "../script/base";
|
|
10
|
+
import { ArkTransaction, Recipient, Coin, ExtendedCoin, ExtendedVirtualCoin, GetVtxosFilter, IReadonlyWallet, IWallet, ReadonlyWalletConfig, SendBitcoinParams, SettleParams, VirtualCoin, WalletBalance, WalletConfig, IAssetManager, IReadonlyAssetManager } from ".";
|
|
12
11
|
import { CSVMultisigTapscript } from "../script/tapscript";
|
|
13
12
|
import { Intent } from "../intent";
|
|
14
13
|
import { IndexerProvider } from "../providers/indexer";
|
|
15
|
-
import { WalletRepository
|
|
16
|
-
import { ContractRepository
|
|
14
|
+
import { WalletRepository } from "../repositories/walletRepository";
|
|
15
|
+
import { ContractRepository } from "../repositories/contractRepository";
|
|
17
16
|
import { Batch } from "./batch";
|
|
17
|
+
import { DelegatorProvider } from "../providers/delegator";
|
|
18
|
+
import { DelegateVtxo } from "../script/delegate";
|
|
19
|
+
import { DelegatorManager } from "./delegator";
|
|
20
|
+
import { ContractManager } from "../contracts/contractManager";
|
|
18
21
|
export type IncomingFunds = {
|
|
19
22
|
type: "utxo";
|
|
20
23
|
coins: Coin[];
|
|
@@ -29,32 +32,44 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
|
|
|
29
32
|
readonly onchainProvider: OnchainProvider;
|
|
30
33
|
readonly indexerProvider: IndexerProvider;
|
|
31
34
|
readonly arkServerPublicKey: Bytes;
|
|
32
|
-
readonly offchainTapscript: DefaultVtxo.Script;
|
|
35
|
+
readonly offchainTapscript: DefaultVtxo.Script | DelegateVtxo.Script;
|
|
33
36
|
readonly boardingTapscript: DefaultVtxo.Script;
|
|
34
37
|
readonly dustAmount: bigint;
|
|
35
38
|
readonly walletRepository: WalletRepository;
|
|
36
39
|
readonly contractRepository: ContractRepository;
|
|
37
|
-
|
|
40
|
+
readonly delegatorProvider?: DelegatorProvider | undefined;
|
|
41
|
+
private _contractManager?;
|
|
42
|
+
private _contractManagerInitializing?;
|
|
43
|
+
protected readonly watcherConfig?: ReadonlyWalletConfig["watcherConfig"];
|
|
44
|
+
private readonly _assetManager;
|
|
45
|
+
get assetManager(): IReadonlyAssetManager;
|
|
46
|
+
protected constructor(identity: ReadonlyIdentity, network: Network, onchainProvider: OnchainProvider, indexerProvider: IndexerProvider, arkServerPublicKey: Bytes, offchainTapscript: DefaultVtxo.Script | DelegateVtxo.Script, boardingTapscript: DefaultVtxo.Script, dustAmount: bigint, walletRepository: WalletRepository, contractRepository: ContractRepository, delegatorProvider?: DelegatorProvider | undefined, watcherConfig?: ReadonlyWalletConfig["watcherConfig"]);
|
|
38
47
|
/**
|
|
39
48
|
* Protected helper to set up shared wallet configuration.
|
|
40
49
|
* Extracts common logic used by both ReadonlyWallet.create() and Wallet.create().
|
|
41
50
|
*/
|
|
42
|
-
protected static setupWalletConfig(config: ReadonlyWalletConfig,
|
|
51
|
+
protected static setupWalletConfig(config: ReadonlyWalletConfig, pubKey: Uint8Array): Promise<{
|
|
43
52
|
arkProvider: ArkProvider;
|
|
44
53
|
indexerProvider: IndexerProvider;
|
|
45
54
|
onchainProvider: OnchainProvider;
|
|
46
55
|
network: Network;
|
|
47
56
|
networkName: NetworkName;
|
|
48
57
|
serverPubKey: Uint8Array<ArrayBuffer>;
|
|
49
|
-
offchainTapscript: DefaultVtxo.Script;
|
|
58
|
+
offchainTapscript: DefaultVtxo.Script | DelegateVtxo.Script;
|
|
50
59
|
boardingTapscript: DefaultVtxo.Script;
|
|
51
60
|
dustAmount: bigint;
|
|
52
|
-
walletRepository:
|
|
53
|
-
contractRepository:
|
|
61
|
+
walletRepository: WalletRepository;
|
|
62
|
+
contractRepository: ContractRepository;
|
|
54
63
|
info: import("../providers/ark").ArkInfo;
|
|
64
|
+
delegatorProvider: DelegatorProvider | undefined;
|
|
55
65
|
}>;
|
|
56
66
|
static create(config: ReadonlyWalletConfig): Promise<ReadonlyWallet>;
|
|
57
67
|
get arkAddress(): ArkAddress;
|
|
68
|
+
/**
|
|
69
|
+
* Get the contract script for the wallet's default address.
|
|
70
|
+
* This is the pkScript hex, used to identify the wallet in ContractManager.
|
|
71
|
+
*/
|
|
72
|
+
get defaultContractScript(): string;
|
|
58
73
|
getAddress(): Promise<string>;
|
|
59
74
|
getBoardingAddress(): Promise<string>;
|
|
60
75
|
getBalance(): Promise<WalletBalance>;
|
|
@@ -68,6 +83,46 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
|
|
|
68
83
|
getBoardingUtxos(): Promise<ExtendedCoin[]>;
|
|
69
84
|
notifyIncomingFunds(eventCallback: (coins: IncomingFunds) => void): Promise<() => void>;
|
|
70
85
|
fetchPendingTxs(): Promise<string[]>;
|
|
86
|
+
/**
|
|
87
|
+
* Get all pkScript hex strings for the wallet's own addresses
|
|
88
|
+
* (both delegate and non-delegate, current and historical).
|
|
89
|
+
* Falls back to only the current script if ContractManager is not yet initialized.
|
|
90
|
+
*/
|
|
91
|
+
getWalletScripts(): Promise<string[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Build a map of scriptHex → VtxoScript for all wallet contracts,
|
|
94
|
+
* so VTXOs can be extended with the correct tapscript per contract.
|
|
95
|
+
*/
|
|
96
|
+
getScriptMap(): Promise<Map<string, DefaultVtxo.Script | DelegateVtxo.Script>>;
|
|
97
|
+
/**
|
|
98
|
+
* Get the ContractManager for managing contracts including the wallet's default address.
|
|
99
|
+
*
|
|
100
|
+
* The ContractManager handles:
|
|
101
|
+
* - The wallet's default receiving address (as a "default" contract)
|
|
102
|
+
* - External contracts (Boltz swaps, HTLCs, etc.)
|
|
103
|
+
* - Multi-contract watching with resilient connections
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const manager = await wallet.getContractManager();
|
|
108
|
+
*
|
|
109
|
+
* // Create a contract for a Boltz swap
|
|
110
|
+
* const contract = await manager.createContract({
|
|
111
|
+
* label: "Boltz Swap",
|
|
112
|
+
* type: "vhtlc",
|
|
113
|
+
* params: { ... },
|
|
114
|
+
* script: swapScript,
|
|
115
|
+
* address: swapAddress,
|
|
116
|
+
* });
|
|
117
|
+
*
|
|
118
|
+
* // Start watching for events (includes wallet's default address)
|
|
119
|
+
* const stop = await manager.onContractEvent((event) => {
|
|
120
|
+
* console.log(`${event.type} on ${event.contractScript}`);
|
|
121
|
+
* });
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
getContractManager(): Promise<ContractManager>;
|
|
125
|
+
private initializeContractManager;
|
|
71
126
|
}
|
|
72
127
|
/**
|
|
73
128
|
* Main wallet implementation for Bitcoin transactions with Ark protocol support.
|
|
@@ -110,11 +165,14 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
110
165
|
readonly forfeitPubkey: Bytes;
|
|
111
166
|
static MIN_FEE_RATE: number;
|
|
112
167
|
readonly identity: Identity;
|
|
168
|
+
readonly delegatorManager?: DelegatorManager;
|
|
169
|
+
private _walletAssetManager?;
|
|
113
170
|
readonly renewalConfig: Required<Omit<WalletConfig["renewalConfig"], "enabled">> & {
|
|
114
171
|
enabled: boolean;
|
|
115
172
|
thresholdMs: number;
|
|
116
173
|
};
|
|
117
|
-
protected constructor(identity: Identity, network: Network, networkName: NetworkName, onchainProvider: OnchainProvider, arkProvider: ArkProvider, indexerProvider: IndexerProvider, arkServerPublicKey: Bytes, offchainTapscript: DefaultVtxo.Script, boardingTapscript: DefaultVtxo.Script, serverUnrollScript: CSVMultisigTapscript.Type, forfeitOutputScript: Bytes, forfeitPubkey: Bytes, dustAmount: bigint, walletRepository: WalletRepository, contractRepository: ContractRepository, renewalConfig?: WalletConfig["renewalConfig"]);
|
|
174
|
+
protected constructor(identity: Identity, network: Network, networkName: NetworkName, onchainProvider: OnchainProvider, arkProvider: ArkProvider, indexerProvider: IndexerProvider, arkServerPublicKey: Bytes, offchainTapscript: DefaultVtxo.Script | DelegateVtxo.Script, boardingTapscript: DefaultVtxo.Script, serverUnrollScript: CSVMultisigTapscript.Type, forfeitOutputScript: Bytes, forfeitPubkey: Bytes, dustAmount: bigint, walletRepository: WalletRepository, contractRepository: ContractRepository, renewalConfig?: WalletConfig["renewalConfig"], delegatorProvider?: DelegatorProvider, watcherConfig?: WalletConfig["watcherConfig"]);
|
|
175
|
+
get assetManager(): IAssetManager;
|
|
118
176
|
static create(config: WalletConfig): Promise<Wallet>;
|
|
119
177
|
/**
|
|
120
178
|
* Convert this wallet to a readonly wallet.
|
|
@@ -142,12 +200,13 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
142
200
|
* @param intentId - The intent ID.
|
|
143
201
|
* @param inputs - The inputs of the intent.
|
|
144
202
|
* @param session - The musig2 signing session, if not provided, the signing will be skipped.
|
|
203
|
+
* @param expectedRecipients - Expected recipients to validate in the vtxo tree.
|
|
145
204
|
*/
|
|
146
|
-
createBatchHandler(intentId: string, inputs: ExtendedCoin[], session?: SignerSession): Batch.Handler;
|
|
205
|
+
createBatchHandler(intentId: string, inputs: ExtendedCoin[], expectedRecipients: Recipient[], session?: SignerSession): Batch.Handler;
|
|
147
206
|
safeRegisterIntent(intent: SignedIntent<Intent.RegisterMessage>): Promise<string>;
|
|
148
|
-
makeRegisterIntentSignature(coins: ExtendedCoin[], outputs: TransactionOutput[], onchainOutputsIndexes: number[], cosignerPubKeys: string[]): Promise<SignedIntent<Intent.RegisterMessage>>;
|
|
207
|
+
makeRegisterIntentSignature(coins: ExtendedCoin[], outputs: TransactionOutput[], onchainOutputsIndexes: number[], cosignerPubKeys: string[], validAt?: number): Promise<SignedIntent<Intent.RegisterMessage>>;
|
|
149
208
|
makeDeleteIntentSignature(coins: ExtendedCoin[]): Promise<SignedIntent<Intent.DeleteMessage>>;
|
|
150
|
-
makeGetPendingTxIntentSignature(
|
|
209
|
+
makeGetPendingTxIntentSignature(coins: ExtendedVirtualCoin[]): Promise<SignedIntent<Intent.GetPendingTxMessage>>;
|
|
151
210
|
/**
|
|
152
211
|
* Finalizes pending transactions by retrieving them from the server and finalizing each one.
|
|
153
212
|
* @param vtxos - Optional list of VTXOs to use instead of retrieving them from the server
|
|
@@ -157,9 +216,44 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
157
216
|
finalized: string[];
|
|
158
217
|
pending: string[];
|
|
159
218
|
}>;
|
|
160
|
-
|
|
219
|
+
/**
|
|
220
|
+
* Send BTC and/or assets to one or more recipients.
|
|
221
|
+
*
|
|
222
|
+
* @param recipients - Array of recipients with their addresses, BTC amounts, and assets
|
|
223
|
+
* @returns Promise resolving to the ark transaction ID
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```typescript
|
|
227
|
+
* const txid = await wallet.send({
|
|
228
|
+
* address: 'ark1...',
|
|
229
|
+
* amount: 1000, // (optional, default to dust) btc amount to send to the output
|
|
230
|
+
* assets: [{ assetId: 'abc123...', amount: 50 }] // (optional) list of assets to send
|
|
231
|
+
* });
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
send(...args: Recipient[]): Promise<string>;
|
|
235
|
+
/**
|
|
236
|
+
* Build an offchain transaction from the given inputs and outputs,
|
|
237
|
+
* sign it, submit to the ark provider, and finalize.
|
|
238
|
+
* @returns The ark transaction id and server-signed checkpoint PSBTs (for bookkeeping)
|
|
239
|
+
*/
|
|
240
|
+
buildAndSubmitOffchainTx(inputs: VirtualCoin[], outputs: TransactionOutput[]): Promise<{
|
|
241
|
+
arkTxid: string;
|
|
242
|
+
signedCheckpointTxs: string[];
|
|
243
|
+
}>;
|
|
244
|
+
private updateDbAfterOffchainTx;
|
|
245
|
+
private updateDbAfterSettle;
|
|
161
246
|
}
|
|
162
|
-
|
|
247
|
+
/**
|
|
248
|
+
* Select virtual coins to reach a target amount, prioritizing those closer to expiry
|
|
249
|
+
* @param coins List of virtual coins to select from
|
|
250
|
+
* @param targetAmount Target amount to reach in satoshis
|
|
251
|
+
* @returns Selected coins and change amount
|
|
252
|
+
*/
|
|
253
|
+
export declare function selectVirtualCoins(coins: VirtualCoin[], targetAmount: number): {
|
|
254
|
+
inputs: VirtualCoin[];
|
|
255
|
+
changeAmount: bigint;
|
|
256
|
+
};
|
|
163
257
|
/**
|
|
164
258
|
* Wait for incoming funds to the wallet
|
|
165
259
|
* @param wallet - The wallet to wait for incoming funds
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers a service worker for the given path only once and caches the
|
|
3
|
+
* registration promise for subsequent calls.
|
|
4
|
+
*
|
|
5
|
+
* @param path - Service worker script path to register.
|
|
6
|
+
* @throws if service workers are not supported or registration fails.
|
|
7
|
+
*/
|
|
8
|
+
export declare function setupServiceWorkerOnce(path: string): Promise<ServiceWorkerRegistration>;
|
|
9
|
+
/**
|
|
10
|
+
* Returns an active service worker instance, optionally ensuring a specific
|
|
11
|
+
* script path is registered before resolving.
|
|
12
|
+
*
|
|
13
|
+
* @param path - Optional service worker script path to register and prefer.
|
|
14
|
+
* @throws if service workers are not supported or no active worker is available.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getActiveServiceWorker(path?: string): Promise<ServiceWorker>;
|
|
17
|
+
/**
|
|
18
|
+
* Clears the cached registration promises.
|
|
19
|
+
* Intended for tests to reset state between runs.
|
|
20
|
+
*/
|
|
21
|
+
export declare const __resetServiceWorkerManager: () => void;
|
|
@@ -2,9 +2,10 @@ export declare const DEFAULT_DB_NAME = "arkade-service-worker";
|
|
|
2
2
|
/**
|
|
3
3
|
* setupServiceWorker sets up the service worker.
|
|
4
4
|
* @param path - the path to the service worker script
|
|
5
|
+
* @throws if service workers are not supported or activation fails
|
|
5
6
|
* @example
|
|
6
7
|
* ```typescript
|
|
7
|
-
* const
|
|
8
|
+
* const worker = await setupServiceWorker("/service-worker.js");
|
|
8
9
|
* ```
|
|
9
10
|
*/
|
|
10
11
|
export declare function setupServiceWorker(path: string): Promise<ServiceWorker>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { TaskItem, TaskResult, TaskQueue } from "./taskQueue";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal async key-value storage interface.
|
|
4
|
+
*
|
|
5
|
+
* Compatible with `@react-native-async-storage/async-storage` and
|
|
6
|
+
* any other storage that exposes the same three methods.
|
|
7
|
+
*/
|
|
8
|
+
export interface AsyncStorageLike {
|
|
9
|
+
getItem(key: string): Promise<string | null>;
|
|
10
|
+
setItem(key: string, value: string): Promise<void>;
|
|
11
|
+
removeItem(key: string): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* AsyncStorage-backed TaskQueue for Expo/React Native.
|
|
15
|
+
*
|
|
16
|
+
* Persists inbox, outbox, and an optional config blob to AsyncStorage
|
|
17
|
+
* so that data survives process restarts and can be shared between
|
|
18
|
+
* foreground and background execution contexts.
|
|
19
|
+
*/
|
|
20
|
+
export declare class AsyncStorageTaskQueue implements TaskQueue {
|
|
21
|
+
private readonly storage;
|
|
22
|
+
private readonly inboxKey;
|
|
23
|
+
private readonly outboxKey;
|
|
24
|
+
private readonly configKey;
|
|
25
|
+
constructor(storage: AsyncStorageLike, prefix?: string);
|
|
26
|
+
addTask(task: TaskItem): Promise<void>;
|
|
27
|
+
removeTask(id: string): Promise<void>;
|
|
28
|
+
getTasks(type?: string): Promise<TaskItem[]>;
|
|
29
|
+
clearTasks(): Promise<void>;
|
|
30
|
+
pushResult(result: TaskResult): Promise<void>;
|
|
31
|
+
getResults(): Promise<TaskResult[]>;
|
|
32
|
+
acknowledgeResults(ids: string[]): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Persist a config blob alongside the queue data.
|
|
35
|
+
* Used by {@link ExpoWallet.setup} to store the wallet parameters
|
|
36
|
+
* that the background handler needs to reconstruct providers.
|
|
37
|
+
*/
|
|
38
|
+
persistConfig(config: Record<string, unknown> | object): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Load the persisted config blob.
|
|
41
|
+
* Used by the background handler to rehydrate wallet dependencies.
|
|
42
|
+
*/
|
|
43
|
+
loadConfig<T = Record<string, unknown>>(): Promise<T | null>;
|
|
44
|
+
private readList;
|
|
45
|
+
private writeList;
|
|
46
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { TaskItem, TaskResult, TaskQueue } from "./taskQueue";
|
|
2
|
+
export { InMemoryTaskQueue } from "./taskQueue";
|
|
3
|
+
export type { AsyncStorageLike } from "./asyncStorageTaskQueue";
|
|
4
|
+
export { AsyncStorageTaskQueue } from "./asyncStorageTaskQueue";
|
|
5
|
+
export type { TaskProcessor, TaskDependencies } from "./taskRunner";
|
|
6
|
+
export { runTasks } from "./taskRunner";
|
|
7
|
+
export { contractPollProcessor, CONTRACT_POLL_TASK_TYPE } from "./processors";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TaskProcessor } from "../taskRunner";
|
|
2
|
+
export declare const CONTRACT_POLL_TASK_TYPE = "contract-poll";
|
|
3
|
+
/**
|
|
4
|
+
* Polls the indexer for the latest VTXO state of every contract and
|
|
5
|
+
* persists the results to the wallet repository.
|
|
6
|
+
*
|
|
7
|
+
* Replicates the polling subset of {@link ContractManager.initialize}:
|
|
8
|
+
* 1. Load all contracts from the contract repository.
|
|
9
|
+
* 2. Mark expired active contracts as inactive.
|
|
10
|
+
* 3. Paginated fetch of spendable VTXOs from the indexer.
|
|
11
|
+
* 4. Extend each VTXO with tapscript data.
|
|
12
|
+
* 5. Save to the wallet repository.
|
|
13
|
+
*/
|
|
14
|
+
export declare const contractPollProcessor: TaskProcessor;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { contractPollProcessor, CONTRACT_POLL_TASK_TYPE, } from "./contractPollProcessor";
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A task item represents a unit of work in the inbox.
|
|
3
|
+
*/
|
|
4
|
+
export interface TaskItem {
|
|
5
|
+
id: string;
|
|
6
|
+
type: string;
|
|
7
|
+
data: Record<string, unknown>;
|
|
8
|
+
createdAt: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A task result represents the outcome of processing a task item.
|
|
12
|
+
*/
|
|
13
|
+
export interface TaskResult {
|
|
14
|
+
id: string;
|
|
15
|
+
taskItemId: string;
|
|
16
|
+
type: string;
|
|
17
|
+
status: "success" | "failed" | "noop";
|
|
18
|
+
data?: Record<string, unknown>;
|
|
19
|
+
executedAt: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Persistence layer for handing off work between foreground and background.
|
|
23
|
+
*
|
|
24
|
+
* - **Inbox**: tasks waiting to be processed.
|
|
25
|
+
* - **Outbox**: results produced by processors, waiting to be consumed.
|
|
26
|
+
*/
|
|
27
|
+
export interface TaskQueue {
|
|
28
|
+
addTask(task: TaskItem): Promise<void>;
|
|
29
|
+
removeTask(id: string): Promise<void>;
|
|
30
|
+
getTasks(type?: string): Promise<TaskItem[]>;
|
|
31
|
+
clearTasks(): Promise<void>;
|
|
32
|
+
pushResult(result: TaskResult): Promise<void>;
|
|
33
|
+
getResults(): Promise<TaskResult[]>;
|
|
34
|
+
acknowledgeResults(ids: string[]): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* In-memory TaskQueue for testing and lightweight use.
|
|
38
|
+
* State is lost when the process exits.
|
|
39
|
+
*/
|
|
40
|
+
export declare class InMemoryTaskQueue implements TaskQueue {
|
|
41
|
+
private inbox;
|
|
42
|
+
private outbox;
|
|
43
|
+
addTask(task: TaskItem): Promise<void>;
|
|
44
|
+
removeTask(id: string): Promise<void>;
|
|
45
|
+
getTasks(type?: string): Promise<TaskItem[]>;
|
|
46
|
+
clearTasks(): Promise<void>;
|
|
47
|
+
pushResult(result: TaskResult): Promise<void>;
|
|
48
|
+
getResults(): Promise<TaskResult[]>;
|
|
49
|
+
acknowledgeResults(ids: string[]): Promise<void>;
|
|
50
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { TaskItem, TaskResult, TaskQueue } from "./taskQueue";
|
|
2
|
+
import type { WalletRepository } from "../../repositories/walletRepository";
|
|
3
|
+
import type { ContractRepository } from "../../repositories/contractRepository";
|
|
4
|
+
import type { IndexerProvider } from "../../providers/indexer";
|
|
5
|
+
import type { ArkProvider } from "../../providers/ark";
|
|
6
|
+
import type { ExtendedVirtualCoin, VirtualCoin } from "../../wallet";
|
|
7
|
+
import type { Contract } from "../../contracts/types";
|
|
8
|
+
/**
|
|
9
|
+
* Shared dependencies injected into every processor at runtime.
|
|
10
|
+
*/
|
|
11
|
+
export interface TaskDependencies {
|
|
12
|
+
walletRepository: WalletRepository;
|
|
13
|
+
contractRepository: ContractRepository;
|
|
14
|
+
indexerProvider: IndexerProvider;
|
|
15
|
+
arkProvider: ArkProvider;
|
|
16
|
+
extendVtxo: (vtxo: VirtualCoin, contract?: Contract) => ExtendedVirtualCoin;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A stateless unit that handles one type of task item.
|
|
20
|
+
*
|
|
21
|
+
* Processors must not keep in-memory state across invocations —
|
|
22
|
+
* all coordination lives in the {@link TaskQueue} and repositories.
|
|
23
|
+
*
|
|
24
|
+
* The `TDeps` parameter defaults to {@link TaskDependencies} but
|
|
25
|
+
* can be overridden for domain-specific processors (e.g. swap processing).
|
|
26
|
+
*/
|
|
27
|
+
export interface TaskProcessor<TDeps = TaskDependencies> {
|
|
28
|
+
readonly taskType: string;
|
|
29
|
+
execute(item: TaskItem, deps: TDeps): Promise<Omit<TaskResult, "id" | "executedAt">>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Run all pending tasks from the queue through matching processors.
|
|
33
|
+
*
|
|
34
|
+
* For each task in the inbox:
|
|
35
|
+
* 1. Find the processor whose `taskType` matches `task.type`.
|
|
36
|
+
* 2. Execute it, producing a {@link TaskResult}.
|
|
37
|
+
* 3. Push the result to the outbox and remove the task from the inbox.
|
|
38
|
+
*
|
|
39
|
+
* Tasks with no matching processor produce a `"noop"` result.
|
|
40
|
+
* Processor errors produce a `"failed"` result with the error message.
|
|
41
|
+
*/
|
|
42
|
+
export declare function runTasks<TDeps = TaskDependencies>(queue: TaskQueue, processors: TaskProcessor<TDeps>[], deps: TDeps): Promise<TaskResult[]>;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { ArkProvider } from "../providers/ark";
|
|
2
|
+
import { ReadonlyWallet, Wallet } from "../wallet/wallet";
|
|
3
|
+
import { ContractRepository, WalletRepository } from "../repositories";
|
|
4
|
+
export type RequestEnvelope = {
|
|
5
|
+
tag: string;
|
|
6
|
+
id: string;
|
|
7
|
+
broadcast?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type ResponseEnvelope = {
|
|
10
|
+
tag: string;
|
|
11
|
+
id?: string;
|
|
12
|
+
error?: Error;
|
|
13
|
+
broadcast?: boolean;
|
|
14
|
+
};
|
|
15
|
+
export interface MessageHandler<REQ extends RequestEnvelope = RequestEnvelope, RES extends ResponseEnvelope = ResponseEnvelope> {
|
|
16
|
+
/**
|
|
17
|
+
* A unique identifier for the updater.
|
|
18
|
+
* This is used to route messages to the correct updater.
|
|
19
|
+
*/
|
|
20
|
+
readonly messageTag: string;
|
|
21
|
+
/**
|
|
22
|
+
* Called once when the SW is starting up
|
|
23
|
+
* @param opts.arkProvider
|
|
24
|
+
* @param opts.wallet Wallet with signature cababilities
|
|
25
|
+
* @param opts.readonlyWallet Read-only Wallet
|
|
26
|
+
**/
|
|
27
|
+
start(services: {
|
|
28
|
+
arkProvider: ArkProvider;
|
|
29
|
+
wallet?: Wallet;
|
|
30
|
+
readonlyWallet: ReadonlyWallet;
|
|
31
|
+
}, repositories: {
|
|
32
|
+
walletRepository: WalletRepository;
|
|
33
|
+
}): Promise<void>;
|
|
34
|
+
/** Called once when the SW is shutting down */
|
|
35
|
+
stop(): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Called by the scheduler to perform a tick.
|
|
38
|
+
* Can be used by the updater to perform periodic tasks or return
|
|
39
|
+
* delayed responses (eg: subscriptions).
|
|
40
|
+
* @param now The current time in milliseconds since the epoch.
|
|
41
|
+
**/
|
|
42
|
+
tick(now: number): Promise<RES[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Handle routed messages from the clients
|
|
45
|
+
**/
|
|
46
|
+
handleMessage(message: REQ): Promise<RES | null>;
|
|
47
|
+
}
|
|
48
|
+
type Options = {
|
|
49
|
+
messageHandlers: MessageHandler[];
|
|
50
|
+
tickIntervalMs?: number;
|
|
51
|
+
debug?: boolean;
|
|
52
|
+
buildServices?: (config: Initialize["config"]) => Promise<{
|
|
53
|
+
arkProvider: ArkProvider;
|
|
54
|
+
wallet?: Wallet;
|
|
55
|
+
readonlyWallet: ReadonlyWallet;
|
|
56
|
+
}>;
|
|
57
|
+
};
|
|
58
|
+
type Initialize = {
|
|
59
|
+
type: "INITIALIZE_MESSAGE_BUS";
|
|
60
|
+
id: string;
|
|
61
|
+
config: {
|
|
62
|
+
wallet: {
|
|
63
|
+
privateKey: string;
|
|
64
|
+
} | {
|
|
65
|
+
publicKey: string;
|
|
66
|
+
};
|
|
67
|
+
arkServer: {
|
|
68
|
+
url: string;
|
|
69
|
+
publicKey?: string;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
export declare class MessageBus {
|
|
74
|
+
private readonly walletRepository;
|
|
75
|
+
private readonly contractRepository;
|
|
76
|
+
private handlers;
|
|
77
|
+
private tickIntervalMs;
|
|
78
|
+
private running;
|
|
79
|
+
private tickTimeout;
|
|
80
|
+
private tickInProgress;
|
|
81
|
+
private debug;
|
|
82
|
+
private initialized;
|
|
83
|
+
private readonly buildServicesFn;
|
|
84
|
+
constructor(walletRepository: WalletRepository, contractRepository: ContractRepository, { messageHandlers, tickIntervalMs, debug, buildServices, }: Options);
|
|
85
|
+
start(): Promise<void>;
|
|
86
|
+
stop(): Promise<void>;
|
|
87
|
+
private scheduleNextTick;
|
|
88
|
+
private runTick;
|
|
89
|
+
private waitForInit;
|
|
90
|
+
private buildServices;
|
|
91
|
+
private onMessage;
|
|
92
|
+
/**
|
|
93
|
+
* Returns the registered SW for the path.
|
|
94
|
+
* It uses the functions in `service-worker-manager.ts` module.
|
|
95
|
+
* @param path
|
|
96
|
+
* @return the Service Worker
|
|
97
|
+
* @throws if not running in a browser environment
|
|
98
|
+
*/
|
|
99
|
+
static getServiceWorker(path?: string): Promise<ServiceWorker>;
|
|
100
|
+
/**
|
|
101
|
+
* Set up and register the Service Worker, ensuring it's done once at most.
|
|
102
|
+
* It uses the functions in `service-worker-manager.ts` module.
|
|
103
|
+
* @param path
|
|
104
|
+
* @return the Service Worker
|
|
105
|
+
* @throws if not running in a browser environment
|
|
106
|
+
*/
|
|
107
|
+
static setup(path: string): Promise<ServiceWorker>;
|
|
108
|
+
}
|
|
109
|
+
export {};
|