wallet-abi-sdk-alpha 0.0.2 → 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 (69) hide show
  1. package/README.md +57 -0
  2. package/builders/package.json +5 -0
  3. package/client/package.json +5 -0
  4. package/dist/builders.cjs +154 -0
  5. package/dist/builders.cjs.map +1 -0
  6. package/dist/builders.d.cts +52 -0
  7. package/dist/builders.d.ts +52 -0
  8. package/dist/builders.js +137 -0
  9. package/dist/builders.js.map +1 -0
  10. package/dist/client.cjs +146 -0
  11. package/dist/client.cjs.map +1 -0
  12. package/dist/client.d.cts +29 -0
  13. package/dist/client.d.ts +29 -0
  14. package/dist/client.js +141 -0
  15. package/dist/client.js.map +1 -0
  16. package/dist/helpers.cjs +164 -0
  17. package/dist/helpers.cjs.map +1 -0
  18. package/dist/helpers.d.cts +120 -0
  19. package/dist/helpers.d.ts +120 -0
  20. package/dist/helpers.js +113 -0
  21. package/dist/helpers.js.map +1 -0
  22. package/dist/index.cjs +21 -2
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +7 -1
  25. package/dist/index.d.ts +7 -1
  26. package/dist/index.js +7 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/protocol.cjs +379 -0
  29. package/dist/protocol.cjs.map +1 -0
  30. package/dist/protocol.d.cts +111 -0
  31. package/dist/protocol.d.ts +111 -0
  32. package/dist/protocol.js +351 -0
  33. package/dist/protocol.js.map +1 -0
  34. package/dist/schema.cjs +427 -0
  35. package/dist/schema.cjs.map +1 -0
  36. package/dist/schema.d.cts +213 -0
  37. package/dist/schema.d.ts +213 -0
  38. package/dist/schema.js +416 -0
  39. package/dist/schema.js.map +1 -0
  40. package/dist/transports.cjs +42 -0
  41. package/dist/transports.cjs.map +1 -0
  42. package/dist/transports.d.cts +32 -0
  43. package/dist/transports.d.ts +32 -0
  44. package/dist/transports.js +39 -0
  45. package/dist/transports.js.map +1 -0
  46. package/dist/vendor/lwk_wasm/lwk_wasm.cjs +1 -0
  47. package/dist/vendor/lwk_wasm/lwk_wasm.d.cts +2 -0
  48. package/dist/vendor/lwk_wasm/lwk_wasm.d.ts +3532 -0
  49. package/dist/vendor/lwk_wasm/lwk_wasm.js +9976 -0
  50. package/dist/vendor/lwk_wasm/lwk_wasm_bg.wasm +0 -0
  51. package/dist/vendor.cjs +24 -0
  52. package/dist/vendor.cjs.map +1 -0
  53. package/dist/vendor.d.cts +2 -0
  54. package/dist/vendor.d.ts +2 -0
  55. package/dist/vendor.js +3 -0
  56. package/dist/vendor.js.map +1 -0
  57. package/dist/wallet.cjs +38 -0
  58. package/dist/wallet.cjs.map +1 -0
  59. package/dist/wallet.d.cts +12 -0
  60. package/dist/wallet.d.ts +12 -0
  61. package/dist/wallet.js +35 -0
  62. package/dist/wallet.js.map +1 -0
  63. package/helpers/package.json +5 -0
  64. package/package.json +122 -9
  65. package/protocol/package.json +5 -0
  66. package/schema/package.json +5 -0
  67. package/transports/package.json +5 -0
  68. package/vendor/package.json +5 -0
  69. package/wallet/package.json +5 -0
package/README.md CHANGED
@@ -1 +1,58 @@
1
1
  # Wallet ABI SDK Alpha
2
+
3
+ Browser-first Wallet ABI SDK for frontend apps integrating with the refactored
4
+ `lwk_simplicity` wallet ABI.
5
+
6
+ ## Surface
7
+
8
+ - `WalletAbiClient` for capability handshake and `tx_create` request flow
9
+ - `protocol` helpers for JSON-RPC and app-link envelopes
10
+ - `schema` types aligned to the Rust wire contract
11
+ - `builders` for request construction
12
+ - `helpers` for lazy `lwk_wasm` browser helpers
13
+ - `wallet` bridge types for wallet/provider implementations
14
+ - `transports` with built-in `createAppLinkTransport`
15
+ - `vendor` for direct `lwk_wasm` re-exports when low-level access is needed
16
+
17
+ ## Example
18
+
19
+ ```ts
20
+ import {
21
+ WalletAbiClient,
22
+ createAppLinkTransport,
23
+ createRuntimeParams,
24
+ createTxCreateRequest,
25
+ } from "wallet-abi-sdk-alpha";
26
+
27
+ async function awaitWalletCallback(): Promise<string> {
28
+ throw new Error("Hook this up to your wallet callback flow.");
29
+ }
30
+
31
+ const client = new WalletAbiClient({
32
+ origin: "https://app.example",
33
+ transport: createAppLinkTransport({
34
+ baseUrl: "https://wallet.example/connect",
35
+ async awaitResponse({ uri }) {
36
+ if (typeof window !== "undefined") {
37
+ window.open(uri, "_blank", "noopener,noreferrer");
38
+ }
39
+
40
+ return await awaitWalletCallback();
41
+ },
42
+ }),
43
+ callback: {
44
+ mode: "qr_roundtrip",
45
+ },
46
+ });
47
+
48
+ const request = createTxCreateRequest({
49
+ network: "localtest-liquid",
50
+ params: createRuntimeParams({
51
+ inputs: [],
52
+ outputs: [],
53
+ }),
54
+ });
55
+
56
+ await client.connect();
57
+ const response = await client.requestTxCreate(request);
58
+ ```
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../dist/builders.cjs",
3
+ "module": "../dist/builders.js",
4
+ "types": "../dist/builders.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../dist/client.cjs",
3
+ "module": "../dist/client.js",
4
+ "types": "../dist/client.d.ts"
5
+ }
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateRequestId = generateRequestId;
4
+ exports.createSimfFinalizer = createSimfFinalizer;
5
+ exports.createWalletInput = createWalletInput;
6
+ exports.createProvidedInput = createProvidedInput;
7
+ exports.createScriptLock = createScriptLock;
8
+ exports.createFinalizerLock = createFinalizerLock;
9
+ exports.createExplicitAsset = createExplicitAsset;
10
+ exports.createNewIssuanceAsset = createNewIssuanceAsset;
11
+ exports.createNewIssuanceToken = createNewIssuanceToken;
12
+ exports.createReIssuanceAsset = createReIssuanceAsset;
13
+ exports.createExplicitBlinder = createExplicitBlinder;
14
+ exports.createProvidedBlinder = createProvidedBlinder;
15
+ exports.createOutput = createOutput;
16
+ exports.createRuntimeParams = createRuntimeParams;
17
+ exports.createTxCreateRequest = createTxCreateRequest;
18
+ const schema_js_1 = require("./schema.cjs");
19
+ const DEFAULT_SEQUENCE = 0xffff_ffff;
20
+ function generateRequestId() {
21
+ const cryptoApi = Reflect.get(globalThis, "crypto");
22
+ if (typeof cryptoApi?.randomUUID === "function") {
23
+ return cryptoApi.randomUUID();
24
+ }
25
+ throw new Error("Wallet ABI SDK requires globalThis.crypto.randomUUID() support.");
26
+ }
27
+ function createWalletSourceFilter(overrides = {}) {
28
+ return {
29
+ asset: "none",
30
+ amount: "none",
31
+ lock: "none",
32
+ ...overrides,
33
+ };
34
+ }
35
+ function createWalletFinalizer() {
36
+ return {
37
+ type: "wallet",
38
+ };
39
+ }
40
+ function createSimfFinalizer(input) {
41
+ return {
42
+ type: "simf",
43
+ source_simf: input.source_simf,
44
+ internal_key: input.internal_key ?? "bip0341",
45
+ arguments: Array.from(input.arguments),
46
+ witness: Array.from(input.witness),
47
+ };
48
+ }
49
+ function createWalletInput(input) {
50
+ return {
51
+ id: input.id,
52
+ utxo_source: {
53
+ wallet: {
54
+ filter: createWalletSourceFilter(input.filter),
55
+ },
56
+ },
57
+ unblinding: input.unblinding ?? "wallet",
58
+ sequence: input.sequence ?? DEFAULT_SEQUENCE,
59
+ ...(input.issuance !== undefined ? { issuance: input.issuance } : {}),
60
+ finalizer: input.finalizer ?? createWalletFinalizer(),
61
+ };
62
+ }
63
+ function createProvidedInput(input) {
64
+ return {
65
+ id: input.id,
66
+ utxo_source: {
67
+ provided: {
68
+ outpoint: input.outpoint,
69
+ },
70
+ },
71
+ unblinding: input.unblinding ?? "explicit",
72
+ sequence: input.sequence ?? DEFAULT_SEQUENCE,
73
+ ...(input.issuance !== undefined ? { issuance: input.issuance } : {}),
74
+ finalizer: input.finalizer ?? createWalletFinalizer(),
75
+ };
76
+ }
77
+ function createScriptLock(script) {
78
+ return {
79
+ type: "script",
80
+ script,
81
+ };
82
+ }
83
+ function createFinalizerLock(finalizer) {
84
+ return {
85
+ type: "finalizer",
86
+ finalizer,
87
+ };
88
+ }
89
+ function createExplicitAsset(asset_id) {
90
+ return {
91
+ type: "asset_id",
92
+ asset_id,
93
+ };
94
+ }
95
+ function createNewIssuanceAsset(input_index) {
96
+ return {
97
+ type: "new_issuance_asset",
98
+ input_index,
99
+ };
100
+ }
101
+ function createNewIssuanceToken(input_index) {
102
+ return {
103
+ type: "new_issuance_token",
104
+ input_index,
105
+ };
106
+ }
107
+ function createReIssuanceAsset(input_index) {
108
+ return {
109
+ type: "re_issuance_asset",
110
+ input_index,
111
+ };
112
+ }
113
+ function createWalletBlinder() {
114
+ return "wallet";
115
+ }
116
+ function createExplicitBlinder() {
117
+ return "explicit";
118
+ }
119
+ function createProvidedBlinder(pubkey) {
120
+ return {
121
+ provided: {
122
+ pubkey,
123
+ },
124
+ };
125
+ }
126
+ function createOutput(input) {
127
+ return {
128
+ id: input.id,
129
+ amount_sat: input.amount_sat,
130
+ lock: input.lock,
131
+ asset: input.asset,
132
+ blinder: input.blinder ?? createWalletBlinder(),
133
+ };
134
+ }
135
+ function createRuntimeParams(input) {
136
+ return {
137
+ inputs: input.inputs ?? [],
138
+ outputs: input.outputs ?? [],
139
+ ...(input.fee_rate_sat_kvb !== undefined
140
+ ? { fee_rate_sat_kvb: input.fee_rate_sat_kvb }
141
+ : {}),
142
+ ...(input.lock_time !== undefined ? { lock_time: input.lock_time } : {}),
143
+ };
144
+ }
145
+ function createTxCreateRequest(input) {
146
+ return {
147
+ abi_version: input.abi_version ?? schema_js_1.TX_CREATE_ABI_VERSION,
148
+ request_id: input.request_id ?? generateRequestId(),
149
+ network: input.network,
150
+ params: input.params,
151
+ broadcast: input.broadcast ?? false,
152
+ };
153
+ }
154
+ //# sourceMappingURL=builders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { type AssetVariant, type BlinderVariant, type FinalizerSpec, type InputSchema, type InputUnblinding, type InternalKeySource, type LockVariant, type OutputSchema, type RuntimeParams, type TxCreateRequest, type WalletAbiLockTime, type WalletAbiNetwork, type WalletSourceFilter } from "./schema.cjs";
2
+ export declare function generateRequestId(): string;
3
+ export declare function createSimfFinalizer(input: {
4
+ source_simf: string;
5
+ arguments: Uint8Array | number[];
6
+ witness: Uint8Array | number[];
7
+ internal_key?: InternalKeySource;
8
+ }): FinalizerSpec;
9
+ export declare function createWalletInput(input: {
10
+ id: string;
11
+ filter?: Partial<WalletSourceFilter>;
12
+ unblinding?: InputUnblinding;
13
+ sequence?: number;
14
+ finalizer?: FinalizerSpec;
15
+ issuance?: InputSchema["issuance"];
16
+ }): InputSchema;
17
+ export declare function createProvidedInput(input: {
18
+ id: string;
19
+ outpoint: string;
20
+ unblinding?: InputUnblinding;
21
+ sequence?: number;
22
+ finalizer?: FinalizerSpec;
23
+ issuance?: InputSchema["issuance"];
24
+ }): InputSchema;
25
+ export declare function createScriptLock(script: string): LockVariant;
26
+ export declare function createFinalizerLock(finalizer: FinalizerSpec): LockVariant;
27
+ export declare function createExplicitAsset(asset_id: string): AssetVariant;
28
+ export declare function createNewIssuanceAsset(input_index: number): AssetVariant;
29
+ export declare function createNewIssuanceToken(input_index: number): AssetVariant;
30
+ export declare function createReIssuanceAsset(input_index: number): AssetVariant;
31
+ export declare function createExplicitBlinder(): BlinderVariant;
32
+ export declare function createProvidedBlinder(pubkey: string): BlinderVariant;
33
+ export declare function createOutput(input: {
34
+ id: string;
35
+ amount_sat: number;
36
+ lock: LockVariant;
37
+ asset: AssetVariant;
38
+ blinder?: BlinderVariant;
39
+ }): OutputSchema;
40
+ export declare function createRuntimeParams(input: {
41
+ inputs?: InputSchema[];
42
+ outputs?: OutputSchema[];
43
+ fee_rate_sat_kvb?: number;
44
+ lock_time?: WalletAbiLockTime;
45
+ }): RuntimeParams;
46
+ export declare function createTxCreateRequest(input: {
47
+ network: WalletAbiNetwork;
48
+ params: RuntimeParams;
49
+ broadcast?: boolean;
50
+ request_id?: string;
51
+ abi_version?: string;
52
+ }): TxCreateRequest;
@@ -0,0 +1,52 @@
1
+ import { type AssetVariant, type BlinderVariant, type FinalizerSpec, type InputSchema, type InputUnblinding, type InternalKeySource, type LockVariant, type OutputSchema, type RuntimeParams, type TxCreateRequest, type WalletAbiLockTime, type WalletAbiNetwork, type WalletSourceFilter } from "./schema.js";
2
+ export declare function generateRequestId(): string;
3
+ export declare function createSimfFinalizer(input: {
4
+ source_simf: string;
5
+ arguments: Uint8Array | number[];
6
+ witness: Uint8Array | number[];
7
+ internal_key?: InternalKeySource;
8
+ }): FinalizerSpec;
9
+ export declare function createWalletInput(input: {
10
+ id: string;
11
+ filter?: Partial<WalletSourceFilter>;
12
+ unblinding?: InputUnblinding;
13
+ sequence?: number;
14
+ finalizer?: FinalizerSpec;
15
+ issuance?: InputSchema["issuance"];
16
+ }): InputSchema;
17
+ export declare function createProvidedInput(input: {
18
+ id: string;
19
+ outpoint: string;
20
+ unblinding?: InputUnblinding;
21
+ sequence?: number;
22
+ finalizer?: FinalizerSpec;
23
+ issuance?: InputSchema["issuance"];
24
+ }): InputSchema;
25
+ export declare function createScriptLock(script: string): LockVariant;
26
+ export declare function createFinalizerLock(finalizer: FinalizerSpec): LockVariant;
27
+ export declare function createExplicitAsset(asset_id: string): AssetVariant;
28
+ export declare function createNewIssuanceAsset(input_index: number): AssetVariant;
29
+ export declare function createNewIssuanceToken(input_index: number): AssetVariant;
30
+ export declare function createReIssuanceAsset(input_index: number): AssetVariant;
31
+ export declare function createExplicitBlinder(): BlinderVariant;
32
+ export declare function createProvidedBlinder(pubkey: string): BlinderVariant;
33
+ export declare function createOutput(input: {
34
+ id: string;
35
+ amount_sat: number;
36
+ lock: LockVariant;
37
+ asset: AssetVariant;
38
+ blinder?: BlinderVariant;
39
+ }): OutputSchema;
40
+ export declare function createRuntimeParams(input: {
41
+ inputs?: InputSchema[];
42
+ outputs?: OutputSchema[];
43
+ fee_rate_sat_kvb?: number;
44
+ lock_time?: WalletAbiLockTime;
45
+ }): RuntimeParams;
46
+ export declare function createTxCreateRequest(input: {
47
+ network: WalletAbiNetwork;
48
+ params: RuntimeParams;
49
+ broadcast?: boolean;
50
+ request_id?: string;
51
+ abi_version?: string;
52
+ }): TxCreateRequest;
@@ -0,0 +1,137 @@
1
+ import { TX_CREATE_ABI_VERSION, } from "./schema.js";
2
+ const DEFAULT_SEQUENCE = 0xffff_ffff;
3
+ export function generateRequestId() {
4
+ const cryptoApi = Reflect.get(globalThis, "crypto");
5
+ if (typeof cryptoApi?.randomUUID === "function") {
6
+ return cryptoApi.randomUUID();
7
+ }
8
+ throw new Error("Wallet ABI SDK requires globalThis.crypto.randomUUID() support.");
9
+ }
10
+ function createWalletSourceFilter(overrides = {}) {
11
+ return {
12
+ asset: "none",
13
+ amount: "none",
14
+ lock: "none",
15
+ ...overrides,
16
+ };
17
+ }
18
+ function createWalletFinalizer() {
19
+ return {
20
+ type: "wallet",
21
+ };
22
+ }
23
+ export function createSimfFinalizer(input) {
24
+ return {
25
+ type: "simf",
26
+ source_simf: input.source_simf,
27
+ internal_key: input.internal_key ?? "bip0341",
28
+ arguments: Array.from(input.arguments),
29
+ witness: Array.from(input.witness),
30
+ };
31
+ }
32
+ export function createWalletInput(input) {
33
+ return {
34
+ id: input.id,
35
+ utxo_source: {
36
+ wallet: {
37
+ filter: createWalletSourceFilter(input.filter),
38
+ },
39
+ },
40
+ unblinding: input.unblinding ?? "wallet",
41
+ sequence: input.sequence ?? DEFAULT_SEQUENCE,
42
+ ...(input.issuance !== undefined ? { issuance: input.issuance } : {}),
43
+ finalizer: input.finalizer ?? createWalletFinalizer(),
44
+ };
45
+ }
46
+ export function createProvidedInput(input) {
47
+ return {
48
+ id: input.id,
49
+ utxo_source: {
50
+ provided: {
51
+ outpoint: input.outpoint,
52
+ },
53
+ },
54
+ unblinding: input.unblinding ?? "explicit",
55
+ sequence: input.sequence ?? DEFAULT_SEQUENCE,
56
+ ...(input.issuance !== undefined ? { issuance: input.issuance } : {}),
57
+ finalizer: input.finalizer ?? createWalletFinalizer(),
58
+ };
59
+ }
60
+ export function createScriptLock(script) {
61
+ return {
62
+ type: "script",
63
+ script,
64
+ };
65
+ }
66
+ export function createFinalizerLock(finalizer) {
67
+ return {
68
+ type: "finalizer",
69
+ finalizer,
70
+ };
71
+ }
72
+ export function createExplicitAsset(asset_id) {
73
+ return {
74
+ type: "asset_id",
75
+ asset_id,
76
+ };
77
+ }
78
+ export function createNewIssuanceAsset(input_index) {
79
+ return {
80
+ type: "new_issuance_asset",
81
+ input_index,
82
+ };
83
+ }
84
+ export function createNewIssuanceToken(input_index) {
85
+ return {
86
+ type: "new_issuance_token",
87
+ input_index,
88
+ };
89
+ }
90
+ export function createReIssuanceAsset(input_index) {
91
+ return {
92
+ type: "re_issuance_asset",
93
+ input_index,
94
+ };
95
+ }
96
+ function createWalletBlinder() {
97
+ return "wallet";
98
+ }
99
+ export function createExplicitBlinder() {
100
+ return "explicit";
101
+ }
102
+ export function createProvidedBlinder(pubkey) {
103
+ return {
104
+ provided: {
105
+ pubkey,
106
+ },
107
+ };
108
+ }
109
+ export function createOutput(input) {
110
+ return {
111
+ id: input.id,
112
+ amount_sat: input.amount_sat,
113
+ lock: input.lock,
114
+ asset: input.asset,
115
+ blinder: input.blinder ?? createWalletBlinder(),
116
+ };
117
+ }
118
+ export function createRuntimeParams(input) {
119
+ return {
120
+ inputs: input.inputs ?? [],
121
+ outputs: input.outputs ?? [],
122
+ ...(input.fee_rate_sat_kvb !== undefined
123
+ ? { fee_rate_sat_kvb: input.fee_rate_sat_kvb }
124
+ : {}),
125
+ ...(input.lock_time !== undefined ? { lock_time: input.lock_time } : {}),
126
+ };
127
+ }
128
+ export function createTxCreateRequest(input) {
129
+ return {
130
+ abi_version: input.abi_version ?? TX_CREATE_ABI_VERSION,
131
+ request_id: input.request_id ?? generateRequestId(),
132
+ network: input.network,
133
+ params: input.params,
134
+ broadcast: input.broadcast ?? false,
135
+ };
136
+ }
137
+ //# sourceMappingURL=builders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WalletAbiClient = exports.WalletAbiClientError = void 0;
4
+ const protocol_js_1 = require("./protocol.cjs");
5
+ class WalletAbiClientError extends Error {
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = "WalletAbiClientError";
9
+ }
10
+ }
11
+ exports.WalletAbiClientError = WalletAbiClientError;
12
+ class WalletAbiClient {
13
+ #transport;
14
+ #origin;
15
+ #requestTimeoutMs;
16
+ #callback;
17
+ #clock;
18
+ #listeners = new Map();
19
+ #capabilities = null;
20
+ #connectPromise = null;
21
+ #rpcRequestId = 0;
22
+ constructor(options) {
23
+ this.#transport = options.transport;
24
+ this.#origin = options.origin;
25
+ this.#requestTimeoutMs = options.requestTimeoutMs ?? 120_000;
26
+ this.#callback = options.callback;
27
+ this.#clock = options.clock ?? (() => Date.now());
28
+ }
29
+ on(event, listener) {
30
+ const listeners = this.#listeners.get(event) ?? new Set();
31
+ listeners.add(listener);
32
+ this.#listeners.set(event, listeners);
33
+ return () => {
34
+ listeners.delete(listener);
35
+ };
36
+ }
37
+ getCapabilities() {
38
+ return this.#capabilities;
39
+ }
40
+ async connect() {
41
+ if (this.#capabilities !== null) {
42
+ return this.#capabilities;
43
+ }
44
+ if (this.#connectPromise !== null) {
45
+ return await this.#connectPromise;
46
+ }
47
+ this.#connectPromise = (async () => {
48
+ await this.#transport.connect?.();
49
+ const response = await this.#sendJsonRpc(crypto.randomUUID(), (0, protocol_js_1.createGetCapabilitiesRequest)(this.#nextRpcRequestId()));
50
+ if (!(0, protocol_js_1.isWalletAbiCapabilitiesResponse)(response.message)) {
51
+ if ((0, protocol_js_1.isJsonRpcErrorResponse)(response.message)) {
52
+ throw new WalletAbiClientError(`capabilities request failed: ${response.message.error.message}`);
53
+ }
54
+ throw new WalletAbiClientError(`expected ${protocol_js_1.WALLET_ABI_GET_CAPABILITIES_METHOD} result`);
55
+ }
56
+ this.#capabilities = response.message.result;
57
+ this.#emit("connected", response.message.result);
58
+ return response.message.result;
59
+ })();
60
+ try {
61
+ return await this.#connectPromise;
62
+ }
63
+ finally {
64
+ this.#connectPromise = null;
65
+ }
66
+ }
67
+ async disconnect() {
68
+ this.#capabilities = null;
69
+ await this.#transport.disconnect?.();
70
+ this.#emit("disconnected", undefined);
71
+ }
72
+ async requestTxCreate(request) {
73
+ const capabilities = await this.connect();
74
+ if (request.abi_version !== capabilities.abi_version) {
75
+ throw new WalletAbiClientError(`request abi_version "${request.abi_version}" does not match wallet abi_version "${capabilities.abi_version}"`);
76
+ }
77
+ if (request.network !== capabilities.network) {
78
+ throw new WalletAbiClientError(`request network "${request.network}" does not match wallet network "${capabilities.network}"`);
79
+ }
80
+ const response = await this.#sendJsonRpc(request.request_id, (0, protocol_js_1.createProcessRequest)(this.#nextRpcRequestId(), request));
81
+ if (response.request_id !== request.request_id) {
82
+ throw new WalletAbiClientError(`transport request_id mismatch: expected "${request.request_id}", got "${response.request_id}"`);
83
+ }
84
+ if ((0, protocol_js_1.isJsonRpcErrorResponse)(response.message)) {
85
+ throw new WalletAbiClientError(`wallet JSON-RPC error ${String(response.message.error.code)}: ${response.message.error.message}`);
86
+ }
87
+ if (!(0, protocol_js_1.isWalletAbiProcessResponse)(response.message)) {
88
+ throw new WalletAbiClientError("wallet returned a non-transaction JSON-RPC result");
89
+ }
90
+ return response.message.result;
91
+ }
92
+ #nextRpcRequestId() {
93
+ this.#rpcRequestId += 1;
94
+ return this.#rpcRequestId;
95
+ }
96
+ #emit(event, payload) {
97
+ const listeners = this.#listeners.get(event);
98
+ if (listeners === undefined) {
99
+ return;
100
+ }
101
+ for (const listener of listeners) {
102
+ listener(payload);
103
+ }
104
+ }
105
+ async #sendJsonRpc(requestId, message) {
106
+ const createdAt = this.#clock();
107
+ const requestEnvelope = (0, protocol_js_1.createTransportRequestEnvelope)({
108
+ request_id: requestId,
109
+ origin: this.#origin,
110
+ created_at_ms: createdAt,
111
+ expires_at_ms: createdAt + this.#requestTimeoutMs,
112
+ message,
113
+ ...(this.#callback !== undefined ? { callback: this.#callback } : {}),
114
+ });
115
+ const responsePromise = Promise.resolve(this.#transport.request(requestEnvelope, {
116
+ now: this.#clock,
117
+ emitDisplayUri: (payload) => {
118
+ this.#emit("display_uri", payload);
119
+ },
120
+ }));
121
+ const response = await this.#withTimeout(responsePromise, `wallet transport request ${requestId} timed out after ${String(this.#requestTimeoutMs)}ms`);
122
+ if (response.message.id !== message.id) {
123
+ throw new WalletAbiClientError(`JSON-RPC id mismatch: expected ${String(message.id)}, got ${String(response.message.id)}`);
124
+ }
125
+ this.#emit("response", response);
126
+ return response;
127
+ }
128
+ async #withTimeout(promise, message) {
129
+ let timer;
130
+ const timeout = new Promise((_, reject) => {
131
+ timer = setTimeout(() => {
132
+ reject(new WalletAbiClientError(message));
133
+ }, this.#requestTimeoutMs);
134
+ });
135
+ try {
136
+ return await Promise.race([promise, timeout]);
137
+ }
138
+ finally {
139
+ if (timer !== undefined) {
140
+ clearTimeout(timer);
141
+ }
142
+ }
143
+ }
144
+ }
145
+ exports.WalletAbiClient = WalletAbiClient;
146
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type WalletAbiTransportCallback, type WalletAbiTransportResponseEnvelope } from "./protocol.cjs";
2
+ import type { WalletAbiDisplayUriPayload, WalletAbiTransportAdapter } from "./transports.cjs";
3
+ import type { TxCreateRequest, TxCreateResponse, WalletAbiCapabilities } from "./schema.cjs";
4
+ interface WalletAbiClientEventMap {
5
+ connected: WalletAbiCapabilities;
6
+ disconnected: undefined;
7
+ display_uri: WalletAbiDisplayUriPayload;
8
+ response: WalletAbiTransportResponseEnvelope;
9
+ }
10
+ export interface WalletAbiClientOptions {
11
+ transport: WalletAbiTransportAdapter;
12
+ origin: string;
13
+ requestTimeoutMs?: number;
14
+ callback?: WalletAbiTransportCallback;
15
+ clock?: () => number;
16
+ }
17
+ export declare class WalletAbiClientError extends Error {
18
+ constructor(message: string);
19
+ }
20
+ export declare class WalletAbiClient {
21
+ #private;
22
+ constructor(options: WalletAbiClientOptions);
23
+ on<K extends keyof WalletAbiClientEventMap>(event: K, listener: (payload: WalletAbiClientEventMap[K]) => void): () => void;
24
+ getCapabilities(): WalletAbiCapabilities | null;
25
+ connect(): Promise<WalletAbiCapabilities>;
26
+ disconnect(): Promise<void>;
27
+ requestTxCreate(request: TxCreateRequest): Promise<TxCreateResponse>;
28
+ }
29
+ export {};