@arkade-os/sdk 0.3.0-alpha.7 → 0.3.0-alpha.8
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 +51 -0
- package/dist/cjs/adapters/expo.js +8 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/providers/expoArk.js +237 -0
- package/dist/cjs/providers/expoIndexer.js +194 -0
- package/dist/cjs/providers/indexer.js +3 -1
- package/dist/cjs/utils/arkTransaction.js +13 -0
- package/dist/cjs/wallet/index.js +1 -1
- package/dist/cjs/wallet/serviceWorker/utils.js +0 -9
- package/dist/cjs/wallet/serviceWorker/worker.js +14 -17
- package/dist/cjs/wallet/utils.js +11 -0
- package/dist/cjs/wallet/wallet.js +69 -51
- package/dist/esm/adapters/expo.js +3 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/providers/expoArk.js +200 -0
- package/dist/esm/providers/expoIndexer.js +157 -0
- package/dist/esm/providers/indexer.js +3 -1
- package/dist/esm/utils/arkTransaction.js +13 -1
- package/dist/esm/wallet/index.js +1 -1
- package/dist/esm/wallet/serviceWorker/utils.js +0 -8
- package/dist/esm/wallet/serviceWorker/worker.js +15 -18
- package/dist/esm/wallet/utils.js +8 -0
- package/dist/esm/wallet/wallet.js +70 -52
- package/dist/types/adapters/expo.d.ts +4 -0
- package/dist/types/index.d.ts +5 -5
- package/dist/types/providers/ark.d.ts +136 -2
- package/dist/types/providers/expoArk.d.ts +22 -0
- package/dist/types/providers/expoIndexer.d.ts +26 -0
- package/dist/types/providers/indexer.d.ts +8 -0
- package/dist/types/utils/arkTransaction.d.ts +3 -1
- package/dist/types/wallet/index.d.ts +44 -6
- package/dist/types/wallet/serviceWorker/utils.d.ts +0 -2
- package/dist/types/wallet/utils.d.ts +2 -0
- package/dist/types/wallet/wallet.d.ts +9 -1
- package/package.json +11 -2
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { Output, SettlementEvent } from "../providers/ark";
|
|
1
|
+
import { Output, SettlementEvent, ArkProvider } from "../providers/ark";
|
|
2
|
+
import { IndexerProvider } from "../providers/indexer";
|
|
3
|
+
import { OnchainProvider } from "../providers/onchain";
|
|
2
4
|
import { Identity } from "../identity";
|
|
3
5
|
import { RelativeTimelock } from "../script/tapscript";
|
|
4
6
|
import { EncodedVtxoScript, TapLeafScript } from "../script/base";
|
|
@@ -7,19 +9,54 @@ import { StorageAdapter } from "../storage";
|
|
|
7
9
|
/**
|
|
8
10
|
* Configuration options for wallet initialization.
|
|
9
11
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* Supports two configuration modes:
|
|
13
|
+
* 1. URL-based: Provide arkServerUrl, indexerUrl (optional), and esploraUrl
|
|
14
|
+
* 2. Provider-based: Provide arkProvider, indexerProvider, and onchainProvider instances
|
|
15
|
+
*
|
|
16
|
+
* At least one of the following must be provided:
|
|
17
|
+
* - arkServerUrl OR arkProvider
|
|
18
|
+
*
|
|
19
|
+
* The wallet will use provided URLs to create default providers if custom provider
|
|
20
|
+
* instances are not supplied. If optional parameters are not provided, the wallet
|
|
21
|
+
* will fetch configuration from the Ark server.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // URL-based configuration
|
|
26
|
+
* const wallet = await Wallet.create({
|
|
27
|
+
* identity: SingleKey.fromHex('...'),
|
|
28
|
+
* arkServerUrl: 'https://ark.example.com',
|
|
29
|
+
* esploraUrl: 'https://mempool.space/api'
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* // Provider-based configuration (e.g., for Expo/React Native)
|
|
33
|
+
* const wallet = await Wallet.create({
|
|
34
|
+
* identity: SingleKey.fromHex('...'),
|
|
35
|
+
* arkProvider: new ExpoArkProvider('https://ark.example.com'),
|
|
36
|
+
* indexerProvider: new ExpoIndexerProvider('https://ark.example.com'),
|
|
37
|
+
* onchainProvider: new EsploraProvider('https://mempool.space/api')
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
14
40
|
*/
|
|
15
41
|
export interface WalletConfig {
|
|
16
42
|
identity: Identity;
|
|
17
|
-
arkServerUrl
|
|
43
|
+
arkServerUrl?: string;
|
|
44
|
+
indexerUrl?: string;
|
|
18
45
|
esploraUrl?: string;
|
|
19
46
|
arkServerPublicKey?: string;
|
|
20
47
|
boardingTimelock?: RelativeTimelock;
|
|
21
48
|
exitTimelock?: RelativeTimelock;
|
|
22
49
|
storage?: StorageAdapter;
|
|
50
|
+
arkProvider?: ArkProvider;
|
|
51
|
+
indexerProvider?: IndexerProvider;
|
|
52
|
+
onchainProvider?: OnchainProvider;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Provider class constructor interface for dependency injection.
|
|
56
|
+
* Ensures provider classes follow the consistent constructor pattern.
|
|
57
|
+
*/
|
|
58
|
+
export interface ProviderClass<T> {
|
|
59
|
+
new (serverUrl: string): T;
|
|
23
60
|
}
|
|
24
61
|
export interface WalletBalance {
|
|
25
62
|
boarding: {
|
|
@@ -73,6 +110,7 @@ export interface VirtualCoin extends Coin {
|
|
|
73
110
|
arkTxId?: string;
|
|
74
111
|
createdAt: Date;
|
|
75
112
|
isUnrolled: boolean;
|
|
113
|
+
isSpent?: boolean;
|
|
76
114
|
}
|
|
77
115
|
export declare enum TxType {
|
|
78
116
|
TxSent = "SENT",
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ExtendedVirtualCoin, VirtualCoin, Wallet } from "../..";
|
|
2
1
|
/**
|
|
3
2
|
* setupServiceWorker sets up the service worker.
|
|
4
3
|
* @param path - the path to the service worker script
|
|
@@ -8,4 +7,3 @@ import { ExtendedVirtualCoin, VirtualCoin, Wallet } from "../..";
|
|
|
8
7
|
* ```
|
|
9
8
|
*/
|
|
10
9
|
export declare function setupServiceWorker(path: string): Promise<ServiceWorker>;
|
|
11
|
-
export declare function extendVirtualCoin(wallet: Wallet, vtxo: VirtualCoin): ExtendedVirtualCoin;
|
|
@@ -25,13 +25,21 @@ export type IncomingFunds = {
|
|
|
25
25
|
*
|
|
26
26
|
* @example
|
|
27
27
|
* ```typescript
|
|
28
|
-
* // Create a wallet
|
|
28
|
+
* // Create a wallet with URL configuration
|
|
29
29
|
* const wallet = await Wallet.create({
|
|
30
30
|
* identity: SingleKey.fromHex('your_private_key'),
|
|
31
31
|
* arkServerUrl: 'https://ark.example.com',
|
|
32
32
|
* esploraUrl: 'https://mempool.space/api'
|
|
33
33
|
* });
|
|
34
34
|
*
|
|
35
|
+
* // Or with custom provider instances (e.g., for Expo/React Native)
|
|
36
|
+
* const wallet = await Wallet.create({
|
|
37
|
+
* identity: SingleKey.fromHex('your_private_key'),
|
|
38
|
+
* arkProvider: new ExpoArkProvider('https://ark.example.com'),
|
|
39
|
+
* indexerProvider: new ExpoIndexerProvider('https://ark.example.com'),
|
|
40
|
+
* esploraUrl: 'https://mempool.space/api'
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
35
43
|
* // Get addresses
|
|
36
44
|
* const arkAddress = await wallet.getAddress();
|
|
37
45
|
* const boardingAddress = await wallet.getBoardingAddress();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arkade-os/sdk",
|
|
3
|
-
"version": "0.3.0-alpha.
|
|
3
|
+
"version": "0.3.0-alpha.8",
|
|
4
4
|
"description": "Bitcoin wallet SDK with Taproot and Ark integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -14,6 +14,12 @@
|
|
|
14
14
|
"require": "./dist/cjs/index.js",
|
|
15
15
|
"default": "./dist/esm/index.js"
|
|
16
16
|
},
|
|
17
|
+
"./adapters/expo": {
|
|
18
|
+
"types": "./dist/types/adapters/expo.d.ts",
|
|
19
|
+
"import": "./dist/esm/adapters/expo.js",
|
|
20
|
+
"require": "./dist/cjs/adapters/expo.js",
|
|
21
|
+
"default": "./dist/esm/adapters/expo.js"
|
|
22
|
+
},
|
|
17
23
|
"./adapters/localStorage": {
|
|
18
24
|
"types": "./dist/types/adapters/localStorage.d.ts",
|
|
19
25
|
"import": "./dist/esm/adapters/localStorage.js",
|
|
@@ -58,6 +64,7 @@
|
|
|
58
64
|
"@types/node": "24.3.1",
|
|
59
65
|
"@vitest/coverage-v8": "3.2.4",
|
|
60
66
|
"esbuild": "^0.25.9",
|
|
67
|
+
"expo": "~52.0.47",
|
|
61
68
|
"eventsource": "4.0.0",
|
|
62
69
|
"glob": "11.0.3",
|
|
63
70
|
"husky": "9.1.7",
|
|
@@ -78,7 +85,7 @@
|
|
|
78
85
|
"author": "Ark Labs",
|
|
79
86
|
"license": "MIT",
|
|
80
87
|
"engines": {
|
|
81
|
-
"node": "
|
|
88
|
+
"node": ">=20.0.0"
|
|
82
89
|
},
|
|
83
90
|
"scripts": {
|
|
84
91
|
"build": "rimraf dist && pnpm run build:esm && node scripts/add-extensions.js && pnpm run build:cjs && pnpm run build:types && node scripts/generate-package-files.js",
|
|
@@ -101,6 +108,8 @@
|
|
|
101
108
|
"test:watch": "vitest",
|
|
102
109
|
"test:coverage": "vitest run --coverage",
|
|
103
110
|
"test:sw": "pnpm run build:browser && node test/serviceWorker/serve.js",
|
|
111
|
+
"expo:web:install": "cd examples/expo-demo && pnpm install",
|
|
112
|
+
"expo:web": "cd examples/expo-demo && pnpm start",
|
|
104
113
|
"format": "prettier --write src test examples",
|
|
105
114
|
"lint": "prettier --check src test examples",
|
|
106
115
|
"audit": "pnpm audit",
|