@arkade-os/sdk 0.4.17 → 0.4.19
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 +16 -6
- package/dist/cjs/contracts/arkcontract.js +0 -2
- package/dist/cjs/contracts/contractManager.js +111 -215
- package/dist/cjs/contracts/contractWatcher.js +86 -115
- package/dist/cjs/providers/ark.js +36 -33
- package/dist/cjs/repositories/indexedDB/manager.js +6 -3
- package/dist/cjs/repositories/indexedDB/schema.js +47 -2
- package/dist/cjs/repositories/indexedDB/walletRepository.js +21 -2
- package/dist/cjs/repositories/realm/contractRepository.js +0 -4
- package/dist/cjs/repositories/realm/index.js +3 -1
- package/dist/cjs/repositories/realm/schemas.js +50 -1
- package/dist/cjs/repositories/realm/walletRepository.js +8 -4
- package/dist/cjs/repositories/scriptFromAddress.js +16 -0
- package/dist/cjs/repositories/sqlite/contractRepository.js +2 -6
- package/dist/cjs/repositories/sqlite/walletRepository.js +121 -33
- package/dist/cjs/utils/syncCursors.js +48 -56
- package/dist/cjs/wallet/expo/background.js +0 -13
- package/dist/cjs/wallet/expo/wallet.js +1 -6
- package/dist/cjs/wallet/serviceWorker/wallet-message-handler.js +16 -7
- package/dist/cjs/wallet/serviceWorker/wallet.js +19 -0
- package/dist/cjs/wallet/utils.js +41 -10
- package/dist/cjs/wallet/vtxo-manager.js +222 -40
- package/dist/cjs/wallet/wallet.js +149 -211
- package/dist/cjs/worker/expo/processors/contractPollProcessor.js +9 -13
- package/dist/cjs/worker/expo/taskRunner.js +2 -11
- package/dist/esm/contracts/arkcontract.js +0 -2
- package/dist/esm/contracts/contractManager.js +113 -217
- package/dist/esm/contracts/contractWatcher.js +86 -115
- package/dist/esm/providers/ark.js +36 -33
- package/dist/esm/repositories/indexedDB/manager.js +6 -3
- package/dist/esm/repositories/indexedDB/schema.js +46 -2
- package/dist/esm/repositories/indexedDB/walletRepository.js +21 -2
- package/dist/esm/repositories/realm/contractRepository.js +0 -4
- package/dist/esm/repositories/realm/index.js +1 -1
- package/dist/esm/repositories/realm/schemas.js +48 -0
- package/dist/esm/repositories/realm/walletRepository.js +8 -4
- package/dist/esm/repositories/scriptFromAddress.js +13 -0
- package/dist/esm/repositories/sqlite/contractRepository.js +2 -6
- package/dist/esm/repositories/sqlite/walletRepository.js +121 -33
- package/dist/esm/utils/syncCursors.js +47 -53
- package/dist/esm/wallet/expo/background.js +0 -13
- package/dist/esm/wallet/expo/wallet.js +2 -7
- package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +17 -8
- package/dist/esm/wallet/serviceWorker/wallet.js +19 -0
- package/dist/esm/wallet/utils.js +41 -9
- package/dist/esm/wallet/vtxo-manager.js +222 -40
- package/dist/esm/wallet/wallet.js +152 -214
- package/dist/esm/worker/expo/processors/contractPollProcessor.js +9 -13
- package/dist/esm/worker/expo/taskRunner.js +3 -12
- package/dist/types/contracts/arkcontract.d.ts +0 -2
- package/dist/types/contracts/contractManager.d.ts +38 -9
- package/dist/types/contracts/contractWatcher.d.ts +22 -21
- package/dist/types/contracts/types.d.ts +0 -7
- package/dist/types/repositories/indexedDB/manager.d.ts +5 -2
- package/dist/types/repositories/indexedDB/schema.d.ts +3 -2
- package/dist/types/repositories/realm/index.d.ts +1 -1
- package/dist/types/repositories/realm/schemas.d.ts +41 -0
- package/dist/types/repositories/scriptFromAddress.d.ts +9 -0
- package/dist/types/repositories/serialization.d.ts +1 -1
- package/dist/types/repositories/sqlite/walletRepository.d.ts +22 -0
- package/dist/types/repositories/walletRepository.d.ts +10 -2
- package/dist/types/utils/syncCursors.d.ts +25 -23
- package/dist/types/wallet/index.d.ts +1 -1
- package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +15 -3
- package/dist/types/wallet/utils.d.ts +20 -4
- package/dist/types/wallet/vtxo-manager.d.ts +29 -6
- package/dist/types/wallet/wallet.d.ts +8 -17
- package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +9 -4
- package/dist/types/worker/expo/taskRunner.d.ts +6 -3
- package/package.json +1 -1
|
@@ -7,7 +7,7 @@ import { OnchainProvider } from "../providers/onchain";
|
|
|
7
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,
|
|
10
|
+
import { ArkTransaction, Coin, ExtendedCoin, ExtendedVirtualCoin, GetVtxosFilter, IAssetManager, IReadonlyAssetManager, IReadonlyWallet, IWallet, ReadonlyWalletConfig, Recipient, SendBitcoinParams, SettleParams, WalletBalance, WalletConfig } from ".";
|
|
11
11
|
import { CSVMultisigTapscript } from "../script/tapscript";
|
|
12
12
|
import { SettlementConfig, VtxoManager } from "./vtxo-manager";
|
|
13
13
|
import { Intent } from "../intent";
|
|
@@ -44,6 +44,7 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
|
|
|
44
44
|
protected readonly watcherConfig?: ReadonlyWalletConfig["watcherConfig"];
|
|
45
45
|
private readonly _assetManager;
|
|
46
46
|
private _syncVtxosInflight?;
|
|
47
|
+
protected _pendingSpendOutpoints: Set<string>;
|
|
47
48
|
get assetManager(): IReadonlyAssetManager;
|
|
48
49
|
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"]);
|
|
49
50
|
/**
|
|
@@ -97,21 +98,10 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
|
|
|
97
98
|
*/
|
|
98
99
|
getTransactionHistory(): Promise<ArkTransaction[]>;
|
|
99
100
|
/**
|
|
100
|
-
*
|
|
101
|
-
* cursor, or do a full bootstrap when no cursor exists. Upserts
|
|
102
|
-
* the result into the cache and advances the sync cursors.
|
|
103
|
-
*
|
|
104
|
-
* Concurrent calls are deduplicated: if a sync is already in flight,
|
|
105
|
-
* subsequent callers receive the same promise instead of triggering
|
|
106
|
-
* a second network round-trip.
|
|
107
|
-
*/
|
|
108
|
-
private syncVtxos;
|
|
109
|
-
private doSyncVtxos;
|
|
110
|
-
/**
|
|
111
|
-
* Clear all virtual output sync cursors, forcing a full re-bootstrap on next sync.
|
|
101
|
+
* Clear the global VTXO sync cursor, forcing a full re-bootstrap on next sync.
|
|
112
102
|
* Useful for recovery after indexer reprocessing or debugging.
|
|
113
103
|
*/
|
|
114
|
-
|
|
104
|
+
clearSyncCursor(): Promise<void>;
|
|
115
105
|
/**
|
|
116
106
|
* Build a transaction history view for the wallet's boarding address.
|
|
117
107
|
*/
|
|
@@ -211,7 +201,6 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
|
|
|
211
201
|
* ```
|
|
212
202
|
*/
|
|
213
203
|
export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
214
|
-
readonly networkName: NetworkName;
|
|
215
204
|
readonly arkProvider: ArkProvider;
|
|
216
205
|
readonly serverUnrollScript: CSVMultisigTapscript.Type;
|
|
217
206
|
readonly forfeitOutputScript: Bytes;
|
|
@@ -229,6 +218,8 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
229
218
|
* same VTXO inputs.
|
|
230
219
|
*/
|
|
231
220
|
private _txLock;
|
|
221
|
+
private _addPendingSpends;
|
|
222
|
+
private _removePendingSpends;
|
|
232
223
|
private _withTxLock;
|
|
233
224
|
/** @deprecated Use settlementConfig instead */
|
|
234
225
|
readonly renewalConfig: Required<Omit<WalletConfig["renewalConfig"], "enabled">> & {
|
|
@@ -236,7 +227,7 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
236
227
|
thresholdMs: number;
|
|
237
228
|
};
|
|
238
229
|
readonly settlementConfig: SettlementConfig | false;
|
|
239
|
-
protected constructor(identity: Identity, network: Network,
|
|
230
|
+
protected constructor(identity: Identity, network: Network, 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,
|
|
240
231
|
/** @deprecated Use settlementConfig */
|
|
241
232
|
renewalConfig?: WalletConfig["renewalConfig"], delegatorProvider?: DelegatorProvider, watcherConfig?: WalletConfig["watcherConfig"], settlementConfig?: WalletConfig["settlementConfig"]);
|
|
242
233
|
get assetManager(): IAssetManager;
|
|
@@ -302,7 +293,7 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
302
293
|
* @param session - Optional musig2 signing session. When omitted, signing steps are skipped.
|
|
303
294
|
*/
|
|
304
295
|
createBatchHandler(intentId: string, inputs: ExtendedCoin[], expectedRecipients: Recipient[], session?: SignerSession): Batch.Handler;
|
|
305
|
-
safeRegisterIntent(intent: SignedIntent<Intent.RegisterMessage
|
|
296
|
+
safeRegisterIntent(intent: SignedIntent<Intent.RegisterMessage>, inputs: ExtendedCoin[]): Promise<string>;
|
|
306
297
|
makeRegisterIntentSignature(coins: ExtendedCoin[], outputs: TransactionOutput[], onchainOutputsIndexes: number[], cosignerPubKeys: string[], validAt?: number): Promise<SignedIntent<Intent.RegisterMessage>>;
|
|
307
298
|
makeDeleteIntentSignature(coins: ExtendedCoin[]): Promise<SignedIntent<Intent.DeleteMessage>>;
|
|
308
299
|
makeGetPendingTxIntentSignature(coins: ExtendedVirtualCoin[]): Promise<SignedIntent<Intent.GetPendingTxMessage>>;
|
|
@@ -6,9 +6,14 @@ export declare const CONTRACT_POLL_TASK_TYPE = "contract-poll";
|
|
|
6
6
|
*
|
|
7
7
|
* Replicates the polling subset of @see ContractManager.initialize:
|
|
8
8
|
* 1. Load all contracts from the contract repository.
|
|
9
|
-
* 2.
|
|
10
|
-
* 3.
|
|
11
|
-
* 4.
|
|
12
|
-
*
|
|
9
|
+
* 2. Paginated fetch of every VTXO (including spent) from the indexer.
|
|
10
|
+
* 3. Extend each VTXO with tapscript data.
|
|
11
|
+
* 4. Save to the wallet repository.
|
|
12
|
+
*
|
|
13
|
+
* NOTE: the indexer query deliberately omits `spendableOnly`. Every
|
|
14
|
+
* repository implements `saveVtxos` as an upsert with no batch delete,
|
|
15
|
+
* so filtering to spendable-only would leave VTXOs that became spent
|
|
16
|
+
* between polls marked as spendable forever. Fetching the full set lets
|
|
17
|
+
* the upsert overwrite stale records with their latest state.
|
|
13
18
|
*/
|
|
14
19
|
export declare const contractPollProcessor: TaskProcessor;
|
|
@@ -5,16 +5,20 @@ import type { IndexerProvider } from "../../providers/indexer";
|
|
|
5
5
|
import type { ArkProvider } from "../../providers/ark";
|
|
6
6
|
import type { ExtendedVirtualCoin, VirtualCoin } from "../../wallet";
|
|
7
7
|
import type { Contract } from "../../contracts/types";
|
|
8
|
-
import type { ReadonlyWallet } from "../../wallet/wallet";
|
|
9
8
|
/**
|
|
10
9
|
* Shared dependencies injected into every processor at runtime.
|
|
10
|
+
*
|
|
11
|
+
* `extendVtxo` requires the owning contract — processors must resolve each
|
|
12
|
+
* vtxo's `script` to a known contract (via the contract repository) before
|
|
13
|
+
* calling this. The strict signature prevents the footgun where a missing
|
|
14
|
+
* contract silently falls back to the wallet's default tapscript.
|
|
11
15
|
*/
|
|
12
16
|
export interface TaskDependencies {
|
|
13
17
|
walletRepository: WalletRepository;
|
|
14
18
|
contractRepository: ContractRepository;
|
|
15
19
|
indexerProvider: IndexerProvider;
|
|
16
20
|
arkProvider: ArkProvider;
|
|
17
|
-
extendVtxo: (vtxo: VirtualCoin, contract
|
|
21
|
+
extendVtxo: (vtxo: VirtualCoin, contract: Contract) => ExtendedVirtualCoin;
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
24
|
* A stateless unit that handles one type of task item.
|
|
@@ -49,7 +53,6 @@ export interface CreateTaskDependenciesOptions {
|
|
|
49
53
|
contractRepository: ContractRepository;
|
|
50
54
|
indexerProvider: IndexerProvider;
|
|
51
55
|
arkProvider: ArkProvider;
|
|
52
|
-
offchainTapscript: ReadonlyWallet["offchainTapscript"];
|
|
53
56
|
}
|
|
54
57
|
/**
|
|
55
58
|
* Build the @see TaskDependencies needed by task processors
|