@wireio/wallet-ext-sdk 0.1.8 → 0.1.10
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 +1 -1
- package/lib/cjs/Client.d.ts.map +1 -0
- package/lib/cjs/Client.js +66 -0
- package/lib/cjs/Errors.d.ts.map +1 -0
- package/lib/cjs/Errors.js +34 -0
- package/lib/cjs/Types.d.ts.map +1 -0
- package/lib/cjs/Types.js +20 -0
- package/lib/cjs/index.d.ts.map +1 -0
- package/lib/cjs/index.js +22 -0
- package/lib/esm/Client.d.ts +29 -0
- package/lib/esm/Client.d.ts.map +1 -0
- package/lib/esm/Client.js +62 -0
- package/lib/esm/Errors.d.ts +14 -0
- package/lib/esm/Errors.d.ts.map +1 -0
- package/lib/esm/Errors.js +27 -0
- package/lib/esm/Types.d.ts +57 -0
- package/lib/esm/Types.d.ts.map +1 -0
- package/lib/esm/Types.js +17 -0
- package/lib/esm/index.d.ts +4 -0
- package/lib/esm/index.d.ts.map +1 -0
- package/lib/esm/index.js +4 -0
- package/lib/test-cjs/Client.test.d.ts +2 -0
- package/lib/test-cjs/Client.test.d.ts.map +1 -0
- package/lib/test-cjs/Client.test.js +120 -0
- package/lib/test-cjs/Client.test.js.map +1 -0
- package/lib/test-cjs/Errors.test.d.ts +2 -0
- package/lib/test-cjs/Errors.test.d.ts.map +1 -0
- package/lib/test-cjs/Errors.test.js +82 -0
- package/lib/test-cjs/Errors.test.js.map +1 -0
- package/lib/test-cjs/Types.test.d.ts +2 -0
- package/lib/test-cjs/Types.test.d.ts.map +1 -0
- package/lib/test-cjs/Types.test.js +40 -0
- package/lib/test-cjs/Types.test.js.map +1 -0
- package/lib/tsconfig.cjs.jest.tsbuildinfo +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -0
- package/lib/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +21 -8
- package/lib/Client.d.ts.map +0 -1
- package/lib/Client.js +0 -62
- package/lib/Errors.d.ts.map +0 -1
- package/lib/Errors.js +0 -27
- package/lib/Types.d.ts.map +0 -1
- package/lib/Types.js +0 -17
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -4
- /package/lib/{Client.d.ts → cjs/Client.d.ts} +0 -0
- /package/lib/{Errors.d.ts → cjs/Errors.d.ts} +0 -0
- /package/lib/{Types.d.ts → cjs/Types.d.ts} +0 -0
- /package/lib/{index.d.ts → cjs/index.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Available on npm: <https://www.npmjs.com/package/@wireio/wallet-ext-sdk>
|
|
|
8
8
|
|
|
9
9
|
This package provides a typed `WireWalletClient` class that wraps the `window.__WIRE_WALLET__` provider injected by the Wire Wallet browser extension. It handles provider detection, method calls, event subscriptions, and error handling with zero runtime dependencies (only `tslib`).
|
|
10
10
|
|
|
11
|
-
The SDK is published as
|
|
11
|
+
The SDK is published as a hybrid ESM+CJS package with full TypeScript declarations.
|
|
12
12
|
|
|
13
13
|
## Install
|
|
14
14
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/Client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAEhB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,eAAe,CAAC,EAAE,kBAAkB,CAAA;KACrC;CACF;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAkC;IAElD,kDAAkD;IAClD,OAAO,CAAC,WAAW;IASnB,sDAAsD;IACtD,WAAW,IAAI,OAAO;IAItB,2DAA2D;IACrD,eAAe,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoBpE,sCAAsC;IAChC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC,gDAAgD;IAC1C,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAIjE,yBAAyB;IACnB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAUtF,kCAAkC;IAClC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAIvD,sCAAsC;IACtC,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;CAGpE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WireWalletClient = void 0;
|
|
4
|
+
const Errors_1 = require("./Errors");
|
|
5
|
+
class WireWalletClient {
|
|
6
|
+
provider = null;
|
|
7
|
+
/** Get the provider, throwing if not available */
|
|
8
|
+
getProvider() {
|
|
9
|
+
if (this.provider)
|
|
10
|
+
return this.provider;
|
|
11
|
+
if (typeof window !== "undefined" && window.__WIRE_WALLET__) {
|
|
12
|
+
this.provider = window.__WIRE_WALLET__;
|
|
13
|
+
return this.provider;
|
|
14
|
+
}
|
|
15
|
+
throw new Errors_1.WalletNotFoundError();
|
|
16
|
+
}
|
|
17
|
+
/** Check if the Wire Wallet extension is installed */
|
|
18
|
+
isInstalled() {
|
|
19
|
+
return typeof window !== "undefined" && !!window.__WIRE_WALLET__;
|
|
20
|
+
}
|
|
21
|
+
/** Wait for the provider to be available (with timeout) */
|
|
22
|
+
async waitForProvider(timeoutMs = 3000) {
|
|
23
|
+
if (this.isInstalled())
|
|
24
|
+
return this.getProvider();
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
const timeout = setTimeout(() => {
|
|
27
|
+
reject(new Errors_1.WalletNotFoundError());
|
|
28
|
+
}, timeoutMs);
|
|
29
|
+
const check = () => {
|
|
30
|
+
if (this.isInstalled()) {
|
|
31
|
+
clearTimeout(timeout);
|
|
32
|
+
resolve(this.getProvider());
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
setTimeout(check, 100);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
check();
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/** Check if the wallet is unlocked */
|
|
42
|
+
async isUnlocked() {
|
|
43
|
+
return this.getProvider().isUnlocked();
|
|
44
|
+
}
|
|
45
|
+
/** Get all accounts configured in the wallet */
|
|
46
|
+
async getAccounts() {
|
|
47
|
+
return this.getProvider().getAccounts();
|
|
48
|
+
}
|
|
49
|
+
/** Sign a transaction */
|
|
50
|
+
async signTransaction(request) {
|
|
51
|
+
const signature = await this.getProvider().signTransaction(request.digest, request.accountId);
|
|
52
|
+
return {
|
|
53
|
+
signatures: [signature],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** Subscribe to a wallet event */
|
|
57
|
+
on(event, handler) {
|
|
58
|
+
this.getProvider().on(event, handler);
|
|
59
|
+
}
|
|
60
|
+
/** Unsubscribe from a wallet event */
|
|
61
|
+
removeListener(event, handler) {
|
|
62
|
+
this.getProvider().removeListener(event, handler);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.WireWalletClient = WireWalletClient;
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSxxQ0FBOEM7QUFPOUMsTUFBYSxnQkFBZ0I7SUFDbkIsUUFBUSxHQUE4QixJQUFJLENBQUE7SUFFbEQsa0RBQWtEO0lBQzFDLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUN2QyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFBO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUN0QixDQUFDO1FBQ0QsTUFBTSxJQUFJLDRCQUFtQixFQUFFLENBQUE7SUFDakMsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxXQUFXO1FBQ1QsT0FBTyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUE7SUFDbEUsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxJQUFJO1FBQ3BDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRWpELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsTUFBTSxDQUFDLElBQUksNEJBQW1CLEVBQUUsQ0FBQyxDQUFBO1lBQ25DLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtZQUViLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRTtnQkFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztvQkFDdkIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7Z0JBQzdCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQyxDQUFBO1lBQ0QsS0FBSyxFQUFFLENBQUE7UUFDVCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsS0FBSyxDQUFDLFVBQVU7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELEtBQUssQ0FBQyxXQUFXO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDekMsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixLQUFLLENBQUMsZUFBZSxDQUFDLE9BQStCO1FBQ25ELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLGVBQWUsQ0FDeEQsT0FBTyxDQUFDLE1BQU0sRUFDZCxPQUFPLENBQUMsU0FBUyxDQUNsQixDQUFBO1FBQ0QsT0FBTztZQUNMLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQztTQUN4QixDQUFBO0lBQ0gsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxFQUFFLENBQUMsS0FBc0IsRUFBRSxPQUFxQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLGNBQWMsQ0FBQyxLQUFzQixFQUFFLE9BQXFCO1FBQzFELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ25ELENBQUM7Q0FDRjtBQXJFRCw0Q0FxRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XHJcbiAgV2lyZVdhbGxldFByb3ZpZGVyLFxyXG4gIFdpcmVXYWxsZXRFdmVudCxcclxuICBFdmVudEhhbmRsZXIsXHJcbiAgU2lnblRyYW5zYWN0aW9uUmVxdWVzdCxcclxuICBTaWduVHJhbnNhY3Rpb25SZXN1bHQsXHJcbn0gZnJvbSBcIi4vVHlwZXNcIlxyXG5pbXBvcnQgeyBXYWxsZXROb3RGb3VuZEVycm9yIH0gZnJvbSBcIi4vRXJyb3JzXCJcclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIGludGVyZmFjZSBXaW5kb3cge1xyXG4gICAgX19XSVJFX1dBTExFVF9fPzogV2lyZVdhbGxldFByb3ZpZGVyXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV2lyZVdhbGxldENsaWVudCB7XHJcbiAgcHJpdmF0ZSBwcm92aWRlcjogV2lyZVdhbGxldFByb3ZpZGVyIHwgbnVsbCA9IG51bGxcclxuXHJcbiAgLyoqIEdldCB0aGUgcHJvdmlkZXIsIHRocm93aW5nIGlmIG5vdCBhdmFpbGFibGUgKi9cclxuICBwcml2YXRlIGdldFByb3ZpZGVyKCk6IFdpcmVXYWxsZXRQcm92aWRlciB7XHJcbiAgICBpZiAodGhpcy5wcm92aWRlcikgcmV0dXJuIHRoaXMucHJvdmlkZXJcclxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5fX1dJUkVfV0FMTEVUX18pIHtcclxuICAgICAgdGhpcy5wcm92aWRlciA9IHdpbmRvdy5fX1dJUkVfV0FMTEVUX19cclxuICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXJcclxuICAgIH1cclxuICAgIHRocm93IG5ldyBXYWxsZXROb3RGb3VuZEVycm9yKClcclxuICB9XHJcblxyXG4gIC8qKiBDaGVjayBpZiB0aGUgV2lyZSBXYWxsZXQgZXh0ZW5zaW9uIGlzIGluc3RhbGxlZCAqL1xyXG4gIGlzSW5zdGFsbGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgISF3aW5kb3cuX19XSVJFX1dBTExFVF9fXHJcbiAgfVxyXG5cclxuICAvKiogV2FpdCBmb3IgdGhlIHByb3ZpZGVyIHRvIGJlIGF2YWlsYWJsZSAod2l0aCB0aW1lb3V0KSAqL1xyXG4gIGFzeW5jIHdhaXRGb3JQcm92aWRlcih0aW1lb3V0TXMgPSAzMDAwKTogUHJvbWlzZTxXaXJlV2FsbGV0UHJvdmlkZXI+IHtcclxuICAgIGlmICh0aGlzLmlzSW5zdGFsbGVkKCkpIHJldHVybiB0aGlzLmdldFByb3ZpZGVyKClcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgcmVqZWN0KG5ldyBXYWxsZXROb3RGb3VuZEVycm9yKCkpXHJcbiAgICAgIH0sIHRpbWVvdXRNcylcclxuXHJcbiAgICAgIGNvbnN0IGNoZWNrID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzSW5zdGFsbGVkKCkpIHtcclxuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KVxyXG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLmdldFByb3ZpZGVyKCkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2ssIDEwMClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2hlY2soKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKiBDaGVjayBpZiB0aGUgd2FsbGV0IGlzIHVubG9ja2VkICovXHJcbiAgYXN5bmMgaXNVbmxvY2tlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmdldFByb3ZpZGVyKCkuaXNVbmxvY2tlZCgpXHJcbiAgfVxyXG5cclxuICAvKiogR2V0IGFsbCBhY2NvdW50cyBjb25maWd1cmVkIGluIHRoZSB3YWxsZXQgKi9cclxuICBhc3luYyBnZXRBY2NvdW50cygpOiBQcm9taXNlPEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRQcm92aWRlcigpLmdldEFjY291bnRzKClcclxuICB9XHJcblxyXG4gIC8qKiBTaWduIGEgdHJhbnNhY3Rpb24gKi9cclxuICBhc3luYyBzaWduVHJhbnNhY3Rpb24ocmVxdWVzdDogU2lnblRyYW5zYWN0aW9uUmVxdWVzdCk6IFByb21pc2U8U2lnblRyYW5zYWN0aW9uUmVzdWx0PiB7XHJcbiAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCB0aGlzLmdldFByb3ZpZGVyKCkuc2lnblRyYW5zYWN0aW9uKFxyXG4gICAgICByZXF1ZXN0LmRpZ2VzdCxcclxuICAgICAgcmVxdWVzdC5hY2NvdW50SWRcclxuICAgIClcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNpZ25hdHVyZXM6IFtzaWduYXR1cmVdLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFN1YnNjcmliZSB0byBhIHdhbGxldCBldmVudCAqL1xyXG4gIG9uKGV2ZW50OiBXaXJlV2FsbGV0RXZlbnQsIGhhbmRsZXI6IEV2ZW50SGFuZGxlcik6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRQcm92aWRlcigpLm9uKGV2ZW50LCBoYW5kbGVyKVxyXG4gIH1cclxuXHJcbiAgLyoqIFVuc3Vic2NyaWJlIGZyb20gYSB3YWxsZXQgZXZlbnQgKi9cclxuICByZW1vdmVMaXN0ZW5lcihldmVudDogV2lyZVdhbGxldEV2ZW50LCBoYW5kbGVyOiBFdmVudEhhbmRsZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0UHJvdmlkZXIoKS5yZW1vdmVMaXN0ZW5lcihldmVudCwgaGFuZGxlcilcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../src/Errors.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;IAG/B,IAAI,EAAE,MAAM;gBADnB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM;CAKtB;AAED,qBAAa,mBAAoB,SAAQ,eAAe;;CAKvD;AAED,qBAAa,iBAAkB,SAAQ,eAAe;;CAKrD;AAED,qBAAa,iBAAkB,SAAQ,eAAe;;CAKrD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserRejectedError = exports.WalletLockedError = exports.WalletNotFoundError = exports.WireWalletError = void 0;
|
|
4
|
+
class WireWalletError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
constructor(message, code) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.code = code;
|
|
9
|
+
this.name = "WireWalletError";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.WireWalletError = WireWalletError;
|
|
13
|
+
class WalletNotFoundError extends WireWalletError {
|
|
14
|
+
constructor() {
|
|
15
|
+
super("Wire Wallet extension not found. Please install it.", 4001);
|
|
16
|
+
this.name = "WalletNotFoundError";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.WalletNotFoundError = WalletNotFoundError;
|
|
20
|
+
class WalletLockedError extends WireWalletError {
|
|
21
|
+
constructor() {
|
|
22
|
+
super("Wire Wallet is locked. Please unlock it first.", 4002);
|
|
23
|
+
this.name = "WalletLockedError";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.WalletLockedError = WalletLockedError;
|
|
27
|
+
class UserRejectedError extends WireWalletError {
|
|
28
|
+
constructor() {
|
|
29
|
+
super("User rejected the request.", 4100);
|
|
30
|
+
this.name = "UserRejectedError";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.UserRejectedError = UserRejectedError;
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFhLGVBQWdCLFNBQVEsS0FBSztJQUcvQjtJQUZULFlBQ0UsT0FBZSxFQUNSLElBQVk7UUFFbkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRlAsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUduQixJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFBO0lBQy9CLENBQUM7Q0FDRjtBQVJELDBDQVFDO0FBRUQsTUFBYSxtQkFBb0IsU0FBUSxlQUFlO0lBQ3REO1FBQ0UsS0FBSyxDQUFDLHFEQUFxRCxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2xFLElBQUksQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUE7SUFDbkMsQ0FBQztDQUNGO0FBTEQsa0RBS0M7QUFFRCxNQUFhLGlCQUFrQixTQUFRLGVBQWU7SUFDcEQ7UUFDRSxLQUFLLENBQUMsZ0RBQWdELEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDN0QsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQTtJQUNqQyxDQUFDO0NBQ0Y7QUFMRCw4Q0FLQztBQUVELE1BQWEsaUJBQWtCLFNBQVEsZUFBZTtJQUNwRDtRQUNFLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFBO0lBQ2pDLENBQUM7Q0FDRjtBQUxELDhDQUtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFdpcmVXYWxsZXRFcnJvciBleHRlbmRzIEVycm9yIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHB1YmxpYyBjb2RlOiBudW1iZXJcclxuICApIHtcclxuICAgIHN1cGVyKG1lc3NhZ2UpXHJcbiAgICB0aGlzLm5hbWUgPSBcIldpcmVXYWxsZXRFcnJvclwiXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV2FsbGV0Tm90Rm91bmRFcnJvciBleHRlbmRzIFdpcmVXYWxsZXRFcnJvciB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcihcIldpcmUgV2FsbGV0IGV4dGVuc2lvbiBub3QgZm91bmQuIFBsZWFzZSBpbnN0YWxsIGl0LlwiLCA0MDAxKVxyXG4gICAgdGhpcy5uYW1lID0gXCJXYWxsZXROb3RGb3VuZEVycm9yXCJcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBXYWxsZXRMb2NrZWRFcnJvciBleHRlbmRzIFdpcmVXYWxsZXRFcnJvciB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcihcIldpcmUgV2FsbGV0IGlzIGxvY2tlZC4gUGxlYXNlIHVubG9jayBpdCBmaXJzdC5cIiwgNDAwMilcclxuICAgIHRoaXMubmFtZSA9IFwiV2FsbGV0TG9ja2VkRXJyb3JcIlxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFVzZXJSZWplY3RlZEVycm9yIGV4dGVuZHMgV2lyZVdhbGxldEVycm9yIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKFwiVXNlciByZWplY3RlZCB0aGUgcmVxdWVzdC5cIiwgNDEwMClcclxuICAgIHRoaXMubmFtZSA9IFwiVXNlclJlamVjdGVkRXJyb3JcIlxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/Types.ts"],"names":[],"mappings":"AACA,6CAA6C;AAC7C,oBAAY,OAAO;IACjB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;CACV;AAED,oCAAoC;AACpC,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAED,+BAA+B;AAC/B,MAAM,WAAW,sBAAsB;IACrC,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,8BAA8B;AAC9B,MAAM,WAAW,qBAAqB;IACpC,iCAAiC;IACjC,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,sBAAsB;AACtB,MAAM,MAAM,eAAe,GACvB,gBAAgB,GAChB,iBAAiB,GACjB,MAAM,GACN,QAAQ,GACR,SAAS,GACT,YAAY,CAAA;AAEhB,yBAAyB;AACzB,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;AAEnD,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAA;IAE3B,uBAAuB;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB,sCAAsC;IACtC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAE9B,gDAAgD;IAChD,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAE3D,2DAA2D;IAC3D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEnE,iCAAiC;IACjC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAEvD,qCAAqC;IACrC,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;CACpE;AAED,qCAAqC;AACrC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,eAAe,CAAC,EAAE,kBAAkB,CAAA;KACrC;CACF"}
|
package/lib/cjs/Types.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChainKind = exports.KeyType = void 0;
|
|
4
|
+
/** Key types supported by Wire blockchain */
|
|
5
|
+
var KeyType;
|
|
6
|
+
(function (KeyType) {
|
|
7
|
+
KeyType["K1"] = "K1";
|
|
8
|
+
KeyType["R1"] = "R1";
|
|
9
|
+
KeyType["EM"] = "EM";
|
|
10
|
+
KeyType["ED"] = "ED";
|
|
11
|
+
})(KeyType || (exports.KeyType = KeyType = {}));
|
|
12
|
+
/** Chain kinds supported by Wire */
|
|
13
|
+
var ChainKind;
|
|
14
|
+
(function (ChainKind) {
|
|
15
|
+
ChainKind["WIRE"] = "WIRE";
|
|
16
|
+
ChainKind["ETHEREUM"] = "ETHEREUM";
|
|
17
|
+
ChainKind["SOLANA"] = "SOLANA";
|
|
18
|
+
ChainKind["SUI"] = "SUI";
|
|
19
|
+
})(ChainKind || (exports.ChainKind = ChainKind = {}));
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQTZDO0FBQzdDLElBQVksT0FLWDtBQUxELFdBQVksT0FBTztJQUNqQixvQkFBUyxDQUFBO0lBQ1Qsb0JBQVMsQ0FBQTtJQUNULG9CQUFTLENBQUE7SUFDVCxvQkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLE9BQU8sdUJBQVAsT0FBTyxRQUtsQjtBQUVELG9DQUFvQztBQUNwQyxJQUFZLFNBS1g7QUFMRCxXQUFZLFNBQVM7SUFDbkIsMEJBQWEsQ0FBQTtJQUNiLGtDQUFxQixDQUFBO0lBQ3JCLDhCQUFpQixDQUFBO0lBQ2pCLHdCQUFXLENBQUE7QUFDYixDQUFDLEVBTFcsU0FBUyx5QkFBVCxTQUFTLFFBS3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGVja3N1bTI1Nn0gZnJvbSBcIkB3aXJlaW8vc2RrLWNvcmVcIlxyXG4vKiogS2V5IHR5cGVzIHN1cHBvcnRlZCBieSBXaXJlIGJsb2NrY2hhaW4gKi9cclxuZXhwb3J0IGVudW0gS2V5VHlwZSB7XHJcbiAgSzEgPSBcIksxXCIsXHJcbiAgUjEgPSBcIlIxXCIsXHJcbiAgRU0gPSBcIkVNXCIsXHJcbiAgRUQgPSBcIkVEXCIsXHJcbn1cclxuXHJcbi8qKiBDaGFpbiBraW5kcyBzdXBwb3J0ZWQgYnkgV2lyZSAqL1xyXG5leHBvcnQgZW51bSBDaGFpbktpbmQge1xyXG4gIFdJUkUgPSBcIldJUkVcIixcclxuICBFVEhFUkVVTSA9IFwiRVRIRVJFVU1cIixcclxuICBTT0xBTkEgPSBcIlNPTEFOQVwiLFxyXG4gIFNVSSA9IFwiU1VJXCIsXHJcbn1cclxuXHJcbi8qKiBTaWduIHRyYW5zYWN0aW9uIHJlcXVlc3QgKi9cclxuZXhwb3J0IGludGVyZmFjZSBTaWduVHJhbnNhY3Rpb25SZXF1ZXN0IHtcclxuICAvKiogU2lnbmluZyBkaWdlc3QgYXMgaGV4IHN0cmluZyAqL1xyXG4gIGRpZ2VzdDogc3RyaW5nXHJcbiAgLyoqIEFjY291bnQgSUQgdG8gc2lnbiB3aXRoICovXHJcbiAgYWNjb3VudElkOiBzdHJpbmdcclxufVxyXG5cclxuLyoqIFNpZ24gdHJhbnNhY3Rpb24gcmVzdWx0ICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2lnblRyYW5zYWN0aW9uUmVzdWx0IHtcclxuICAvKiogQXJyYXkgb2Ygc2lnbmF0dXJlIHN0cmluZ3MgKi9cclxuICBzaWduYXR1cmVzOiBzdHJpbmdbXVxyXG59XHJcblxyXG4vKiogUHJvdmlkZXIgZXZlbnRzICovXHJcbmV4cG9ydCB0eXBlIFdpcmVXYWxsZXRFdmVudCA9XHJcbiAgfCBcImFjY291bnRDaGFuZ2VkXCJcclxuICB8IFwiZW5kcG9pbnRDaGFuZ2VkXCJcclxuICB8IFwibG9ja1wiXHJcbiAgfCBcInVubG9ja1wiXHJcbiAgfCBcImNvbm5lY3RcIlxyXG4gIHwgXCJkaXNjb25uZWN0XCJcclxuXHJcbi8qKiBFdmVudCBoYW5kbGVyIHR5cGUgKi9cclxuZXhwb3J0IHR5cGUgRXZlbnRIYW5kbGVyID0gKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXHJcblxyXG4vKiogVGhlIHByb3ZpZGVyIGludGVyZmFjZSBpbmplY3RlZCBhcyB3aW5kb3cuX19XSVJFX1dBTExFVF9fICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgV2lyZVdhbGxldFByb3ZpZGVyIHtcclxuICAvKiogSWRlbnRpZmllcyB0aGlzIGFzIHRoZSBXaXJlIFdhbGxldCAqL1xyXG4gIHJlYWRvbmx5IGlzV2lyZVdhbGxldDogdHJ1ZVxyXG5cclxuICAvKiogUHJvdmlkZXIgdmVyc2lvbiAqL1xyXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZ1xyXG5cclxuICAvKiogQ2hlY2sgaWYgdGhlIHdhbGxldCBpcyB1bmxvY2tlZCAqL1xyXG4gIGlzVW5sb2NrZWQoKTogUHJvbWlzZTxib29sZWFuPlxyXG5cclxuICAvKiogR2V0IGFsbCBhY2NvdW50cyBjb25maWd1cmVkIGluIHRoZSB3YWxsZXQgKi9cclxuICBnZXRBY2NvdW50cygpOiBQcm9taXNlPEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+PlxyXG5cclxuICAvKiogU2lnbiBhIHRyYW5zYWN0aW9uIGRpZ2VzdCB3aXRoIHRoZSBzcGVjaWZpZWQgYWNjb3VudCAqL1xyXG4gIHNpZ25UcmFuc2FjdGlvbihkaWdlc3Q6IHN0cmluZywgYWNjb3VudElkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz5cclxuXHJcbiAgLyoqIFN1YnNjcmliZSB0byB3YWxsZXQgZXZlbnRzICovXHJcbiAgb24oZXZlbnQ6IFdpcmVXYWxsZXRFdmVudCwgaGFuZGxlcjogRXZlbnRIYW5kbGVyKTogdm9pZFxyXG5cclxuICAvKiogVW5zdWJzY3JpYmUgZnJvbSB3YWxsZXQgZXZlbnRzICovXHJcbiAgcmVtb3ZlTGlzdGVuZXIoZXZlbnQ6IFdpcmVXYWxsZXRFdmVudCwgaGFuZGxlcjogRXZlbnRIYW5kbGVyKTogdm9pZFxyXG59XHJcblxyXG4vKiogQXVnbWVudCB0aGUgZ2xvYmFsIFdpbmRvdyB0eXBlICovXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHtcclxuICAgIF9fV0lSRV9XQUxMRVRfXz86IFdpcmVXYWxsZXRQcm92aWRlclxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.WireWalletClient = void 0;
|
|
18
|
+
__exportStar(require("./Types"), exports);
|
|
19
|
+
__exportStar(require("./Errors"), exports);
|
|
20
|
+
var Client_1 = require("./Client");
|
|
21
|
+
Object.defineProperty(exports, "WireWalletClient", { enumerable: true, get: function () { return Client_1.WireWalletClient; } });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBdUI7QUFDdkIsMkNBQXdCO0FBQ3hCLG1DQUEyQztBQUFsQywwR0FBQSxnQkFBZ0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL1R5cGVzXCJcclxuZXhwb3J0ICogZnJvbSBcIi4vRXJyb3JzXCJcclxuZXhwb3J0IHsgV2lyZVdhbGxldENsaWVudCB9IGZyb20gXCIuL0NsaWVudFwiXHJcbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { WireWalletProvider, WireWalletEvent, EventHandler, SignTransactionRequest, SignTransactionResult } from "./Types";
|
|
2
|
+
declare global {
|
|
3
|
+
interface Window {
|
|
4
|
+
__WIRE_WALLET__?: WireWalletProvider;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export declare class WireWalletClient {
|
|
8
|
+
private provider;
|
|
9
|
+
/** Get the provider, throwing if not available */
|
|
10
|
+
private getProvider;
|
|
11
|
+
/** Check if the Wire Wallet extension is installed */
|
|
12
|
+
isInstalled(): boolean;
|
|
13
|
+
/** Wait for the provider to be available (with timeout) */
|
|
14
|
+
waitForProvider(timeoutMs?: number): Promise<WireWalletProvider>;
|
|
15
|
+
/** Check if the wallet is unlocked */
|
|
16
|
+
isUnlocked(): Promise<boolean>;
|
|
17
|
+
/** Get all accounts configured in the wallet */
|
|
18
|
+
getAccounts(): Promise<Array<{
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
}>>;
|
|
22
|
+
/** Sign a transaction */
|
|
23
|
+
signTransaction(request: SignTransactionRequest): Promise<SignTransactionResult>;
|
|
24
|
+
/** Subscribe to a wallet event */
|
|
25
|
+
on(event: WireWalletEvent, handler: EventHandler): void;
|
|
26
|
+
/** Unsubscribe from a wallet event */
|
|
27
|
+
removeListener(event: WireWalletEvent, handler: EventHandler): void;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=Client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/Client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAEhB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,eAAe,CAAC,EAAE,kBAAkB,CAAA;KACrC;CACF;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAkC;IAElD,kDAAkD;IAClD,OAAO,CAAC,WAAW;IASnB,sDAAsD;IACtD,WAAW,IAAI,OAAO;IAItB,2DAA2D;IACrD,eAAe,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoBpE,sCAAsC;IAChC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC,gDAAgD;IAC1C,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAIjE,yBAAyB;IACnB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAUtF,kCAAkC;IAClC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAIvD,sCAAsC;IACtC,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;CAGpE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { WalletNotFoundError } from "./Errors";
|
|
2
|
+
export class WireWalletClient {
|
|
3
|
+
provider = null;
|
|
4
|
+
/** Get the provider, throwing if not available */
|
|
5
|
+
getProvider() {
|
|
6
|
+
if (this.provider)
|
|
7
|
+
return this.provider;
|
|
8
|
+
if (typeof window !== "undefined" && window.__WIRE_WALLET__) {
|
|
9
|
+
this.provider = window.__WIRE_WALLET__;
|
|
10
|
+
return this.provider;
|
|
11
|
+
}
|
|
12
|
+
throw new WalletNotFoundError();
|
|
13
|
+
}
|
|
14
|
+
/** Check if the Wire Wallet extension is installed */
|
|
15
|
+
isInstalled() {
|
|
16
|
+
return typeof window !== "undefined" && !!window.__WIRE_WALLET__;
|
|
17
|
+
}
|
|
18
|
+
/** Wait for the provider to be available (with timeout) */
|
|
19
|
+
async waitForProvider(timeoutMs = 3000) {
|
|
20
|
+
if (this.isInstalled())
|
|
21
|
+
return this.getProvider();
|
|
22
|
+
return new Promise((resolve, reject) => {
|
|
23
|
+
const timeout = setTimeout(() => {
|
|
24
|
+
reject(new WalletNotFoundError());
|
|
25
|
+
}, timeoutMs);
|
|
26
|
+
const check = () => {
|
|
27
|
+
if (this.isInstalled()) {
|
|
28
|
+
clearTimeout(timeout);
|
|
29
|
+
resolve(this.getProvider());
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
setTimeout(check, 100);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
check();
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/** Check if the wallet is unlocked */
|
|
39
|
+
async isUnlocked() {
|
|
40
|
+
return this.getProvider().isUnlocked();
|
|
41
|
+
}
|
|
42
|
+
/** Get all accounts configured in the wallet */
|
|
43
|
+
async getAccounts() {
|
|
44
|
+
return this.getProvider().getAccounts();
|
|
45
|
+
}
|
|
46
|
+
/** Sign a transaction */
|
|
47
|
+
async signTransaction(request) {
|
|
48
|
+
const signature = await this.getProvider().signTransaction(request.digest, request.accountId);
|
|
49
|
+
return {
|
|
50
|
+
signatures: [signature],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** Subscribe to a wallet event */
|
|
54
|
+
on(event, handler) {
|
|
55
|
+
this.getProvider().on(event, handler);
|
|
56
|
+
}
|
|
57
|
+
/** Unsubscribe from a wallet event */
|
|
58
|
+
removeListener(event, handler) {
|
|
59
|
+
this.getProvider().removeListener(event, handler);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFPOUMsTUFBTSxPQUFPLGdCQUFnQjtJQUNuQixRQUFRLEdBQThCLElBQUksQ0FBQTtJQUVsRCxrREFBa0Q7SUFDMUMsV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO1FBQ3ZDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUE7WUFDdEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO1FBQ3RCLENBQUM7UUFDRCxNQUFNLElBQUksbUJBQW1CLEVBQUUsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsc0RBQXNEO0lBQ3RELFdBQVc7UUFDVCxPQUFPLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsMkRBQTJEO0lBQzNELEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUk7UUFDcEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFFakQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUM5QixNQUFNLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7WUFDbkMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO1lBRWIsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFO2dCQUNqQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUN2QixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtnQkFDN0IsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUE7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDLENBQUE7WUFDRCxLQUFLLEVBQUUsQ0FBQTtRQUNULENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHNDQUFzQztJQUN0QyxLQUFLLENBQUMsVUFBVTtRQUNkLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ3hDLENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsS0FBSyxDQUFDLFdBQVc7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUN6QyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBK0I7UUFDbkQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUN4RCxPQUFPLENBQUMsTUFBTSxFQUNkLE9BQU8sQ0FBQyxTQUFTLENBQ2xCLENBQUE7UUFDRCxPQUFPO1lBQ0wsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1NBQ3hCLENBQUE7SUFDSCxDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLEVBQUUsQ0FBQyxLQUFzQixFQUFFLE9BQXFCO1FBQzlDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsY0FBYyxDQUFDLEtBQXNCLEVBQUUsT0FBcUI7UUFDMUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDbkQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xyXG4gIFdpcmVXYWxsZXRQcm92aWRlcixcclxuICBXaXJlV2FsbGV0RXZlbnQsXHJcbiAgRXZlbnRIYW5kbGVyLFxyXG4gIFNpZ25UcmFuc2FjdGlvblJlcXVlc3QsXHJcbiAgU2lnblRyYW5zYWN0aW9uUmVzdWx0LFxyXG59IGZyb20gXCIuL1R5cGVzXCJcclxuaW1wb3J0IHsgV2FsbGV0Tm90Rm91bmRFcnJvciB9IGZyb20gXCIuL0Vycm9yc1wiXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHtcclxuICAgIF9fV0lSRV9XQUxMRVRfXz86IFdpcmVXYWxsZXRQcm92aWRlclxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFdpcmVXYWxsZXRDbGllbnQge1xyXG4gIHByaXZhdGUgcHJvdmlkZXI6IFdpcmVXYWxsZXRQcm92aWRlciB8IG51bGwgPSBudWxsXHJcblxyXG4gIC8qKiBHZXQgdGhlIHByb3ZpZGVyLCB0aHJvd2luZyBpZiBub3QgYXZhaWxhYmxlICovXHJcbiAgcHJpdmF0ZSBnZXRQcm92aWRlcigpOiBXaXJlV2FsbGV0UHJvdmlkZXIge1xyXG4gICAgaWYgKHRoaXMucHJvdmlkZXIpIHJldHVybiB0aGlzLnByb3ZpZGVyXHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cuX19XSVJFX1dBTExFVF9fKSB7XHJcbiAgICAgIHRoaXMucHJvdmlkZXIgPSB3aW5kb3cuX19XSVJFX1dBTExFVF9fXHJcbiAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyXHJcbiAgICB9XHJcbiAgICB0aHJvdyBuZXcgV2FsbGV0Tm90Rm91bmRFcnJvcigpXHJcbiAgfVxyXG5cclxuICAvKiogQ2hlY2sgaWYgdGhlIFdpcmUgV2FsbGV0IGV4dGVuc2lvbiBpcyBpbnN0YWxsZWQgKi9cclxuICBpc0luc3RhbGxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmICEhd2luZG93Ll9fV0lSRV9XQUxMRVRfX1xyXG4gIH1cclxuXHJcbiAgLyoqIFdhaXQgZm9yIHRoZSBwcm92aWRlciB0byBiZSBhdmFpbGFibGUgKHdpdGggdGltZW91dCkgKi9cclxuICBhc3luYyB3YWl0Rm9yUHJvdmlkZXIodGltZW91dE1zID0gMzAwMCk6IFByb21pc2U8V2lyZVdhbGxldFByb3ZpZGVyPiB7XHJcbiAgICBpZiAodGhpcy5pc0luc3RhbGxlZCgpKSByZXR1cm4gdGhpcy5nZXRQcm92aWRlcigpXHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHJlamVjdChuZXcgV2FsbGV0Tm90Rm91bmRFcnJvcigpKVxyXG4gICAgICB9LCB0aW1lb3V0TXMpXHJcblxyXG4gICAgICBjb25zdCBjaGVjayA9ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5pc0luc3RhbGxlZCgpKSB7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dClcclxuICAgICAgICAgIHJlc29sdmUodGhpcy5nZXRQcm92aWRlcigpKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrLCAxMDApXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNoZWNrKClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKiogQ2hlY2sgaWYgdGhlIHdhbGxldCBpcyB1bmxvY2tlZCAqL1xyXG4gIGFzeW5jIGlzVW5sb2NrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRQcm92aWRlcigpLmlzVW5sb2NrZWQoKVxyXG4gIH1cclxuXHJcbiAgLyoqIEdldCBhbGwgYWNjb3VudHMgY29uZmlndXJlZCBpbiB0aGUgd2FsbGV0ICovXHJcbiAgYXN5bmMgZ2V0QWNjb3VudHMoKTogUHJvbWlzZTxBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9Pj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJvdmlkZXIoKS5nZXRBY2NvdW50cygpXHJcbiAgfVxyXG5cclxuICAvKiogU2lnbiBhIHRyYW5zYWN0aW9uICovXHJcbiAgYXN5bmMgc2lnblRyYW5zYWN0aW9uKHJlcXVlc3Q6IFNpZ25UcmFuc2FjdGlvblJlcXVlc3QpOiBQcm9taXNlPFNpZ25UcmFuc2FjdGlvblJlc3VsdD4ge1xyXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgdGhpcy5nZXRQcm92aWRlcigpLnNpZ25UcmFuc2FjdGlvbihcclxuICAgICAgcmVxdWVzdC5kaWdlc3QsXHJcbiAgICAgIHJlcXVlc3QuYWNjb3VudElkXHJcbiAgICApXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzaWduYXR1cmVzOiBbc2lnbmF0dXJlXSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBTdWJzY3JpYmUgdG8gYSB3YWxsZXQgZXZlbnQgKi9cclxuICBvbihldmVudDogV2lyZVdhbGxldEV2ZW50LCBoYW5kbGVyOiBFdmVudEhhbmRsZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0UHJvdmlkZXIoKS5vbihldmVudCwgaGFuZGxlcilcclxuICB9XHJcblxyXG4gIC8qKiBVbnN1YnNjcmliZSBmcm9tIGEgd2FsbGV0IGV2ZW50ICovXHJcbiAgcmVtb3ZlTGlzdGVuZXIoZXZlbnQ6IFdpcmVXYWxsZXRFdmVudCwgaGFuZGxlcjogRXZlbnRIYW5kbGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldFByb3ZpZGVyKCkucmVtb3ZlTGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIpXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class WireWalletError extends Error {
|
|
2
|
+
code: number;
|
|
3
|
+
constructor(message: string, code: number);
|
|
4
|
+
}
|
|
5
|
+
export declare class WalletNotFoundError extends WireWalletError {
|
|
6
|
+
constructor();
|
|
7
|
+
}
|
|
8
|
+
export declare class WalletLockedError extends WireWalletError {
|
|
9
|
+
constructor();
|
|
10
|
+
}
|
|
11
|
+
export declare class UserRejectedError extends WireWalletError {
|
|
12
|
+
constructor();
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=Errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../src/Errors.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;IAG/B,IAAI,EAAE,MAAM;gBADnB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM;CAKtB;AAED,qBAAa,mBAAoB,SAAQ,eAAe;;CAKvD;AAED,qBAAa,iBAAkB,SAAQ,eAAe;;CAKrD;AAED,qBAAa,iBAAkB,SAAQ,eAAe;;CAKrD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export class WireWalletError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
constructor(message, code) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.code = code;
|
|
6
|
+
this.name = "WireWalletError";
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class WalletNotFoundError extends WireWalletError {
|
|
10
|
+
constructor() {
|
|
11
|
+
super("Wire Wallet extension not found. Please install it.", 4001);
|
|
12
|
+
this.name = "WalletNotFoundError";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class WalletLockedError extends WireWalletError {
|
|
16
|
+
constructor() {
|
|
17
|
+
super("Wire Wallet is locked. Please unlock it first.", 4002);
|
|
18
|
+
this.name = "WalletLockedError";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export class UserRejectedError extends WireWalletError {
|
|
22
|
+
constructor() {
|
|
23
|
+
super("User rejected the request.", 4100);
|
|
24
|
+
this.name = "UserRejectedError";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxLQUFLO0lBRy9CO0lBRlQsWUFDRSxPQUFlLEVBQ1IsSUFBWTtRQUVuQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFGUCxTQUFJLEdBQUosSUFBSSxDQUFRO1FBR25CLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUE7SUFDL0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQWU7SUFDdEQ7UUFDRSxLQUFLLENBQUMscURBQXFELEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDbEUsSUFBSSxDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQTtJQUNuQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQUNwRDtRQUNFLEtBQUssQ0FBQyxnREFBZ0QsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM3RCxJQUFJLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFBO0lBQ2pDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBQ3BEO1FBQ0UsS0FBSyxDQUFDLDRCQUE0QixFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUE7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFdpcmVXYWxsZXRFcnJvciBleHRlbmRzIEVycm9yIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHB1YmxpYyBjb2RlOiBudW1iZXJcclxuICApIHtcclxuICAgIHN1cGVyKG1lc3NhZ2UpXHJcbiAgICB0aGlzLm5hbWUgPSBcIldpcmVXYWxsZXRFcnJvclwiXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV2FsbGV0Tm90Rm91bmRFcnJvciBleHRlbmRzIFdpcmVXYWxsZXRFcnJvciB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcihcIldpcmUgV2FsbGV0IGV4dGVuc2lvbiBub3QgZm91bmQuIFBsZWFzZSBpbnN0YWxsIGl0LlwiLCA0MDAxKVxyXG4gICAgdGhpcy5uYW1lID0gXCJXYWxsZXROb3RGb3VuZEVycm9yXCJcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBXYWxsZXRMb2NrZWRFcnJvciBleHRlbmRzIFdpcmVXYWxsZXRFcnJvciB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcihcIldpcmUgV2FsbGV0IGlzIGxvY2tlZC4gUGxlYXNlIHVubG9jayBpdCBmaXJzdC5cIiwgNDAwMilcclxuICAgIHRoaXMubmFtZSA9IFwiV2FsbGV0TG9ja2VkRXJyb3JcIlxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFVzZXJSZWplY3RlZEVycm9yIGV4dGVuZHMgV2lyZVdhbGxldEVycm9yIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKFwiVXNlciByZWplY3RlZCB0aGUgcmVxdWVzdC5cIiwgNDEwMClcclxuICAgIHRoaXMubmFtZSA9IFwiVXNlclJlamVjdGVkRXJyb3JcIlxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/** Key types supported by Wire blockchain */
|
|
2
|
+
export declare enum KeyType {
|
|
3
|
+
K1 = "K1",
|
|
4
|
+
R1 = "R1",
|
|
5
|
+
EM = "EM",
|
|
6
|
+
ED = "ED"
|
|
7
|
+
}
|
|
8
|
+
/** Chain kinds supported by Wire */
|
|
9
|
+
export declare enum ChainKind {
|
|
10
|
+
WIRE = "WIRE",
|
|
11
|
+
ETHEREUM = "ETHEREUM",
|
|
12
|
+
SOLANA = "SOLANA",
|
|
13
|
+
SUI = "SUI"
|
|
14
|
+
}
|
|
15
|
+
/** Sign transaction request */
|
|
16
|
+
export interface SignTransactionRequest {
|
|
17
|
+
/** Signing digest as hex string */
|
|
18
|
+
digest: string;
|
|
19
|
+
/** Account ID to sign with */
|
|
20
|
+
accountId: string;
|
|
21
|
+
}
|
|
22
|
+
/** Sign transaction result */
|
|
23
|
+
export interface SignTransactionResult {
|
|
24
|
+
/** Array of signature strings */
|
|
25
|
+
signatures: string[];
|
|
26
|
+
}
|
|
27
|
+
/** Provider events */
|
|
28
|
+
export type WireWalletEvent = "accountChanged" | "endpointChanged" | "lock" | "unlock" | "connect" | "disconnect";
|
|
29
|
+
/** Event handler type */
|
|
30
|
+
export type EventHandler = (...args: any[]) => void;
|
|
31
|
+
/** The provider interface injected as window.__WIRE_WALLET__ */
|
|
32
|
+
export interface WireWalletProvider {
|
|
33
|
+
/** Identifies this as the Wire Wallet */
|
|
34
|
+
readonly isWireWallet: true;
|
|
35
|
+
/** Provider version */
|
|
36
|
+
readonly version: string;
|
|
37
|
+
/** Check if the wallet is unlocked */
|
|
38
|
+
isUnlocked(): Promise<boolean>;
|
|
39
|
+
/** Get all accounts configured in the wallet */
|
|
40
|
+
getAccounts(): Promise<Array<{
|
|
41
|
+
id: string;
|
|
42
|
+
name: string;
|
|
43
|
+
}>>;
|
|
44
|
+
/** Sign a transaction digest with the specified account */
|
|
45
|
+
signTransaction(digest: string, accountId: string): Promise<string>;
|
|
46
|
+
/** Subscribe to wallet events */
|
|
47
|
+
on(event: WireWalletEvent, handler: EventHandler): void;
|
|
48
|
+
/** Unsubscribe from wallet events */
|
|
49
|
+
removeListener(event: WireWalletEvent, handler: EventHandler): void;
|
|
50
|
+
}
|
|
51
|
+
/** Augment the global Window type */
|
|
52
|
+
declare global {
|
|
53
|
+
interface Window {
|
|
54
|
+
__WIRE_WALLET__?: WireWalletProvider;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=Types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/Types.ts"],"names":[],"mappings":"AACA,6CAA6C;AAC7C,oBAAY,OAAO;IACjB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;CACV;AAED,oCAAoC;AACpC,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAED,+BAA+B;AAC/B,MAAM,WAAW,sBAAsB;IACrC,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,8BAA8B;AAC9B,MAAM,WAAW,qBAAqB;IACpC,iCAAiC;IACjC,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,sBAAsB;AACtB,MAAM,MAAM,eAAe,GACvB,gBAAgB,GAChB,iBAAiB,GACjB,MAAM,GACN,QAAQ,GACR,SAAS,GACT,YAAY,CAAA;AAEhB,yBAAyB;AACzB,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;AAEnD,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAA;IAE3B,uBAAuB;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB,sCAAsC;IACtC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAE9B,gDAAgD;IAChD,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAE3D,2DAA2D;IAC3D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEnE,iCAAiC;IACjC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAEvD,qCAAqC;IACrC,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;CACpE;AAED,qCAAqC;AACrC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,eAAe,CAAC,EAAE,kBAAkB,CAAA;KACrC;CACF"}
|
package/lib/esm/Types.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Key types supported by Wire blockchain */
|
|
2
|
+
export var KeyType;
|
|
3
|
+
(function (KeyType) {
|
|
4
|
+
KeyType["K1"] = "K1";
|
|
5
|
+
KeyType["R1"] = "R1";
|
|
6
|
+
KeyType["EM"] = "EM";
|
|
7
|
+
KeyType["ED"] = "ED";
|
|
8
|
+
})(KeyType || (KeyType = {}));
|
|
9
|
+
/** Chain kinds supported by Wire */
|
|
10
|
+
export var ChainKind;
|
|
11
|
+
(function (ChainKind) {
|
|
12
|
+
ChainKind["WIRE"] = "WIRE";
|
|
13
|
+
ChainKind["ETHEREUM"] = "ETHEREUM";
|
|
14
|
+
ChainKind["SOLANA"] = "SOLANA";
|
|
15
|
+
ChainKind["SUI"] = "SUI";
|
|
16
|
+
})(ChainKind || (ChainKind = {}));
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNkNBQTZDO0FBQzdDLE1BQU0sQ0FBTixJQUFZLE9BS1g7QUFMRCxXQUFZLE9BQU87SUFDakIsb0JBQVMsQ0FBQTtJQUNULG9CQUFTLENBQUE7SUFDVCxvQkFBUyxDQUFBO0lBQ1Qsb0JBQVMsQ0FBQTtBQUNYLENBQUMsRUFMVyxPQUFPLEtBQVAsT0FBTyxRQUtsQjtBQUVELG9DQUFvQztBQUNwQyxNQUFNLENBQU4sSUFBWSxTQUtYO0FBTEQsV0FBWSxTQUFTO0lBQ25CLDBCQUFhLENBQUE7SUFDYixrQ0FBcUIsQ0FBQTtJQUNyQiw4QkFBaUIsQ0FBQTtJQUNqQix3QkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLFNBQVMsS0FBVCxTQUFTLFFBS3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGVja3N1bTI1Nn0gZnJvbSBcIkB3aXJlaW8vc2RrLWNvcmVcIlxyXG4vKiogS2V5IHR5cGVzIHN1cHBvcnRlZCBieSBXaXJlIGJsb2NrY2hhaW4gKi9cclxuZXhwb3J0IGVudW0gS2V5VHlwZSB7XHJcbiAgSzEgPSBcIksxXCIsXHJcbiAgUjEgPSBcIlIxXCIsXHJcbiAgRU0gPSBcIkVNXCIsXHJcbiAgRUQgPSBcIkVEXCIsXHJcbn1cclxuXHJcbi8qKiBDaGFpbiBraW5kcyBzdXBwb3J0ZWQgYnkgV2lyZSAqL1xyXG5leHBvcnQgZW51bSBDaGFpbktpbmQge1xyXG4gIFdJUkUgPSBcIldJUkVcIixcclxuICBFVEhFUkVVTSA9IFwiRVRIRVJFVU1cIixcclxuICBTT0xBTkEgPSBcIlNPTEFOQVwiLFxyXG4gIFNVSSA9IFwiU1VJXCIsXHJcbn1cclxuXHJcbi8qKiBTaWduIHRyYW5zYWN0aW9uIHJlcXVlc3QgKi9cclxuZXhwb3J0IGludGVyZmFjZSBTaWduVHJhbnNhY3Rpb25SZXF1ZXN0IHtcclxuICAvKiogU2lnbmluZyBkaWdlc3QgYXMgaGV4IHN0cmluZyAqL1xyXG4gIGRpZ2VzdDogc3RyaW5nXHJcbiAgLyoqIEFjY291bnQgSUQgdG8gc2lnbiB3aXRoICovXHJcbiAgYWNjb3VudElkOiBzdHJpbmdcclxufVxyXG5cclxuLyoqIFNpZ24gdHJhbnNhY3Rpb24gcmVzdWx0ICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2lnblRyYW5zYWN0aW9uUmVzdWx0IHtcclxuICAvKiogQXJyYXkgb2Ygc2lnbmF0dXJlIHN0cmluZ3MgKi9cclxuICBzaWduYXR1cmVzOiBzdHJpbmdbXVxyXG59XHJcblxyXG4vKiogUHJvdmlkZXIgZXZlbnRzICovXHJcbmV4cG9ydCB0eXBlIFdpcmVXYWxsZXRFdmVudCA9XHJcbiAgfCBcImFjY291bnRDaGFuZ2VkXCJcclxuICB8IFwiZW5kcG9pbnRDaGFuZ2VkXCJcclxuICB8IFwibG9ja1wiXHJcbiAgfCBcInVubG9ja1wiXHJcbiAgfCBcImNvbm5lY3RcIlxyXG4gIHwgXCJkaXNjb25uZWN0XCJcclxuXHJcbi8qKiBFdmVudCBoYW5kbGVyIHR5cGUgKi9cclxuZXhwb3J0IHR5cGUgRXZlbnRIYW5kbGVyID0gKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXHJcblxyXG4vKiogVGhlIHByb3ZpZGVyIGludGVyZmFjZSBpbmplY3RlZCBhcyB3aW5kb3cuX19XSVJFX1dBTExFVF9fICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgV2lyZVdhbGxldFByb3ZpZGVyIHtcclxuICAvKiogSWRlbnRpZmllcyB0aGlzIGFzIHRoZSBXaXJlIFdhbGxldCAqL1xyXG4gIHJlYWRvbmx5IGlzV2lyZVdhbGxldDogdHJ1ZVxyXG5cclxuICAvKiogUHJvdmlkZXIgdmVyc2lvbiAqL1xyXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZ1xyXG5cclxuICAvKiogQ2hlY2sgaWYgdGhlIHdhbGxldCBpcyB1bmxvY2tlZCAqL1xyXG4gIGlzVW5sb2NrZWQoKTogUHJvbWlzZTxib29sZWFuPlxyXG5cclxuICAvKiogR2V0IGFsbCBhY2NvdW50cyBjb25maWd1cmVkIGluIHRoZSB3YWxsZXQgKi9cclxuICBnZXRBY2NvdW50cygpOiBQcm9taXNlPEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+PlxyXG5cclxuICAvKiogU2lnbiBhIHRyYW5zYWN0aW9uIGRpZ2VzdCB3aXRoIHRoZSBzcGVjaWZpZWQgYWNjb3VudCAqL1xyXG4gIHNpZ25UcmFuc2FjdGlvbihkaWdlc3Q6IHN0cmluZywgYWNjb3VudElkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz5cclxuXHJcbiAgLyoqIFN1YnNjcmliZSB0byB3YWxsZXQgZXZlbnRzICovXHJcbiAgb24oZXZlbnQ6IFdpcmVXYWxsZXRFdmVudCwgaGFuZGxlcjogRXZlbnRIYW5kbGVyKTogdm9pZFxyXG5cclxuICAvKiogVW5zdWJzY3JpYmUgZnJvbSB3YWxsZXQgZXZlbnRzICovXHJcbiAgcmVtb3ZlTGlzdGVuZXIoZXZlbnQ6IFdpcmVXYWxsZXRFdmVudCwgaGFuZGxlcjogRXZlbnRIYW5kbGVyKTogdm9pZFxyXG59XHJcblxyXG4vKiogQXVnbWVudCB0aGUgZ2xvYmFsIFdpbmRvdyB0eXBlICovXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHtcclxuICAgIF9fV0lSRV9XQUxMRVRfXz86IFdpcmVXYWxsZXRQcm92aWRlclxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
|
package/lib/esm/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./Types";
|
|
2
|
+
export * from "./Errors";
|
|
3
|
+
export { WireWalletClient } from "./Client";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxVQUFVLENBQUE7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vVHlwZXNcIlxyXG5leHBvcnQgKiBmcm9tIFwiLi9FcnJvcnNcIlxyXG5leHBvcnQgeyBXaXJlV2FsbGV0Q2xpZW50IH0gZnJvbSBcIi4vQ2xpZW50XCJcclxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Client.test.d.ts","sourceRoot":"","sources":["../../tests/Client.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const wallet_ext_sdk_1 = require("@wireio/wallet-ext-sdk");
|
|
4
|
+
const mockProvider = {
|
|
5
|
+
isWireWallet: true,
|
|
6
|
+
version: "1.0.0",
|
|
7
|
+
isUnlocked: jest.fn(),
|
|
8
|
+
getAccounts: jest.fn(),
|
|
9
|
+
signTransaction: jest.fn(),
|
|
10
|
+
on: jest.fn(),
|
|
11
|
+
removeListener: jest.fn(),
|
|
12
|
+
};
|
|
13
|
+
describe("WireWalletClient", () => {
|
|
14
|
+
let client;
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
client = new wallet_ext_sdk_1.WireWalletClient();
|
|
17
|
+
mockProvider.isUnlocked.mockReset();
|
|
18
|
+
mockProvider.getAccounts.mockReset();
|
|
19
|
+
mockProvider.signTransaction.mockReset();
|
|
20
|
+
mockProvider.on.mockReset();
|
|
21
|
+
mockProvider.removeListener.mockReset();
|
|
22
|
+
delete window.__WIRE_WALLET__;
|
|
23
|
+
});
|
|
24
|
+
afterEach(() => {
|
|
25
|
+
delete window.__WIRE_WALLET__;
|
|
26
|
+
});
|
|
27
|
+
describe("isInstalled()", () => {
|
|
28
|
+
test("returns false when window.__WIRE_WALLET__ is undefined", () => {
|
|
29
|
+
expect(client.isInstalled()).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
test("returns true when window.__WIRE_WALLET__ is defined", () => {
|
|
32
|
+
window.__WIRE_WALLET__ = mockProvider;
|
|
33
|
+
expect(client.isInstalled()).toBe(true);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe("methods throw WalletNotFoundError when provider not available", () => {
|
|
37
|
+
test("getAccounts() throws WalletNotFoundError", async () => {
|
|
38
|
+
await expect(client.getAccounts()).rejects.toThrow(wallet_ext_sdk_1.WalletNotFoundError);
|
|
39
|
+
});
|
|
40
|
+
test("signTransaction() throws WalletNotFoundError", async () => {
|
|
41
|
+
await expect(client.signTransaction({ digest: "abcd", accountId: "test" })).rejects.toThrow(wallet_ext_sdk_1.WalletNotFoundError);
|
|
42
|
+
});
|
|
43
|
+
test("isUnlocked() throws WalletNotFoundError", async () => {
|
|
44
|
+
await expect(client.isUnlocked()).rejects.toThrow(wallet_ext_sdk_1.WalletNotFoundError);
|
|
45
|
+
});
|
|
46
|
+
test("on() throws WalletNotFoundError", () => {
|
|
47
|
+
expect(() => client.on("lock", jest.fn())).toThrow(wallet_ext_sdk_1.WalletNotFoundError);
|
|
48
|
+
});
|
|
49
|
+
test("removeListener() throws WalletNotFoundError", () => {
|
|
50
|
+
expect(() => client.removeListener("lock", jest.fn())).toThrow(wallet_ext_sdk_1.WalletNotFoundError);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe("getAccounts()", () => {
|
|
54
|
+
test("calls provider.getAccounts", async () => {
|
|
55
|
+
window.__WIRE_WALLET__ = mockProvider;
|
|
56
|
+
mockProvider.getAccounts.mockResolvedValue([]);
|
|
57
|
+
const result = await client.getAccounts();
|
|
58
|
+
expect(mockProvider.getAccounts).toHaveBeenCalled();
|
|
59
|
+
expect(result).toEqual([]);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe("signTransaction()", () => {
|
|
63
|
+
test("calls provider.signTransaction with digest and accountId", async () => {
|
|
64
|
+
window.__WIRE_WALLET__ = mockProvider;
|
|
65
|
+
const request = {
|
|
66
|
+
digest: "deadbeef",
|
|
67
|
+
accountId: "account-123",
|
|
68
|
+
};
|
|
69
|
+
mockProvider.signTransaction.mockResolvedValue("SIG_K1_xyz");
|
|
70
|
+
const result = await client.signTransaction(request);
|
|
71
|
+
expect(mockProvider.signTransaction).toHaveBeenCalledWith("deadbeef", "account-123");
|
|
72
|
+
expect(result).toEqual({ signatures: ["SIG_K1_xyz"] });
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe("isUnlocked()", () => {
|
|
76
|
+
test("calls provider.isUnlocked", async () => {
|
|
77
|
+
window.__WIRE_WALLET__ = mockProvider;
|
|
78
|
+
mockProvider.isUnlocked.mockResolvedValue(true);
|
|
79
|
+
const result = await client.isUnlocked();
|
|
80
|
+
expect(mockProvider.isUnlocked).toHaveBeenCalled();
|
|
81
|
+
expect(result).toBe(true);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe("on()", () => {
|
|
85
|
+
test("calls provider.on with event and handler", () => {
|
|
86
|
+
window.__WIRE_WALLET__ = mockProvider;
|
|
87
|
+
const handler = jest.fn();
|
|
88
|
+
client.on("accountChanged", handler);
|
|
89
|
+
expect(mockProvider.on).toHaveBeenCalledWith("accountChanged", handler);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe("removeListener()", () => {
|
|
93
|
+
test("calls provider.removeListener with event and handler", () => {
|
|
94
|
+
window.__WIRE_WALLET__ = mockProvider;
|
|
95
|
+
const handler = jest.fn();
|
|
96
|
+
client.removeListener("disconnect", handler);
|
|
97
|
+
expect(mockProvider.removeListener).toHaveBeenCalledWith("disconnect", handler);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe("waitForProvider()", () => {
|
|
101
|
+
test("resolves immediately when provider is already available", async () => {
|
|
102
|
+
window.__WIRE_WALLET__ = mockProvider;
|
|
103
|
+
const provider = await client.waitForProvider();
|
|
104
|
+
expect(provider.isWireWallet).toBe(true);
|
|
105
|
+
});
|
|
106
|
+
test("resolves when provider becomes available", async () => {
|
|
107
|
+
const promise = client.waitForProvider(2000);
|
|
108
|
+
// Simulate the provider appearing after a short delay
|
|
109
|
+
setTimeout(() => {
|
|
110
|
+
window.__WIRE_WALLET__ = mockProvider;
|
|
111
|
+
}, 150);
|
|
112
|
+
const provider = await promise;
|
|
113
|
+
expect(provider.isWireWallet).toBe(true);
|
|
114
|
+
});
|
|
115
|
+
test("rejects with WalletNotFoundError on timeout", async () => {
|
|
116
|
+
await expect(client.waitForProvider(200)).rejects.toThrow(wallet_ext_sdk_1.WalletNotFoundError);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=Client.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Client.test.js","sourceRoot":"","sources":["../../tests/Client.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { WireWalletClient, WalletNotFoundError } from \"@wireio/wallet-ext-sdk\"\r\n\r\nconst mockProvider = {\r\n isWireWallet: true as const,\r\n version: \"1.0.0\",\r\n isUnlocked: jest.fn(),\r\n getAccounts: jest.fn(),\r\n signTransaction: jest.fn(),\r\n on: jest.fn(),\r\n removeListener: jest.fn(),\r\n}\r\n\r\ndescribe(\"WireWalletClient\", () => {\r\n let client: WireWalletClient\r\n\r\n beforeEach(() => {\r\n client = new WireWalletClient()\r\n mockProvider.isUnlocked.mockReset()\r\n mockProvider.getAccounts.mockReset()\r\n mockProvider.signTransaction.mockReset()\r\n mockProvider.on.mockReset()\r\n mockProvider.removeListener.mockReset()\r\n delete window.__WIRE_WALLET__\r\n })\r\n\r\n afterEach(() => {\r\n delete window.__WIRE_WALLET__\r\n })\r\n\r\n describe(\"isInstalled()\", () => {\r\n test(\"returns false when window.__WIRE_WALLET__ is undefined\", () => {\r\n expect(client.isInstalled()).toBe(false)\r\n })\r\n\r\n test(\"returns true when window.__WIRE_WALLET__ is defined\", () => {\r\n window.__WIRE_WALLET__ = mockProvider\r\n expect(client.isInstalled()).toBe(true)\r\n })\r\n })\r\n\r\n describe(\"methods throw WalletNotFoundError when provider not available\", () => {\r\n test(\"getAccounts() throws WalletNotFoundError\", async () => {\r\n await expect(client.getAccounts()).rejects.toThrow(WalletNotFoundError)\r\n })\r\n\r\n test(\"signTransaction() throws WalletNotFoundError\", async () => {\r\n await expect(\r\n client.signTransaction({ digest: \"abcd\", accountId: \"test\" })\r\n ).rejects.toThrow(WalletNotFoundError)\r\n })\r\n\r\n test(\"isUnlocked() throws WalletNotFoundError\", async () => {\r\n await expect(client.isUnlocked()).rejects.toThrow(WalletNotFoundError)\r\n })\r\n\r\n test(\"on() throws WalletNotFoundError\", () => {\r\n expect(() => client.on(\"lock\", jest.fn())).toThrow(WalletNotFoundError)\r\n })\r\n\r\n test(\"removeListener() throws WalletNotFoundError\", () => {\r\n expect(() => client.removeListener(\"lock\", jest.fn())).toThrow(WalletNotFoundError)\r\n })\r\n })\r\n\r\n describe(\"getAccounts()\", () => {\r\n test(\"calls provider.getAccounts\", async () => {\r\n window.__WIRE_WALLET__ = mockProvider\r\n mockProvider.getAccounts.mockResolvedValue([])\r\n const result = await client.getAccounts()\r\n expect(mockProvider.getAccounts).toHaveBeenCalled()\r\n expect(result).toEqual([])\r\n })\r\n })\r\n\r\n describe(\"signTransaction()\", () => {\r\n test(\"calls provider.signTransaction with digest and accountId\", async () => {\r\n window.__WIRE_WALLET__ = mockProvider\r\n const request = {\r\n digest: \"deadbeef\",\r\n accountId: \"account-123\",\r\n }\r\n mockProvider.signTransaction.mockResolvedValue(\"SIG_K1_xyz\")\r\n const result = await client.signTransaction(request)\r\n expect(mockProvider.signTransaction).toHaveBeenCalledWith(\"deadbeef\", \"account-123\")\r\n expect(result).toEqual({ signatures: [\"SIG_K1_xyz\"] })\r\n })\r\n })\r\n\r\n describe(\"isUnlocked()\", () => {\r\n test(\"calls provider.isUnlocked\", async () => {\r\n window.__WIRE_WALLET__ = mockProvider\r\n mockProvider.isUnlocked.mockResolvedValue(true)\r\n const result = await client.isUnlocked()\r\n expect(mockProvider.isUnlocked).toHaveBeenCalled()\r\n expect(result).toBe(true)\r\n })\r\n })\r\n\r\n describe(\"on()\", () => {\r\n test(\"calls provider.on with event and handler\", () => {\r\n window.__WIRE_WALLET__ = mockProvider\r\n const handler = jest.fn()\r\n client.on(\"accountChanged\", handler)\r\n expect(mockProvider.on).toHaveBeenCalledWith(\"accountChanged\", handler)\r\n })\r\n })\r\n\r\n describe(\"removeListener()\", () => {\r\n test(\"calls provider.removeListener with event and handler\", () => {\r\n window.__WIRE_WALLET__ = mockProvider\r\n const handler = jest.fn()\r\n client.removeListener(\"disconnect\", handler)\r\n expect(mockProvider.removeListener).toHaveBeenCalledWith(\"disconnect\", handler)\r\n })\r\n })\r\n\r\n describe(\"waitForProvider()\", () => {\r\n test(\"resolves immediately when provider is already available\", async () => {\r\n window.__WIRE_WALLET__ = mockProvider\r\n const provider = await client.waitForProvider()\r\n expect(provider.isWireWallet).toBe(true)\r\n })\r\n\r\n test(\"resolves when provider becomes available\", async () => {\r\n const promise = client.waitForProvider(2000)\r\n // Simulate the provider appearing after a short delay\r\n setTimeout(() => {\r\n window.__WIRE_WALLET__ = mockProvider\r\n }, 150)\r\n const provider = await promise\r\n expect(provider.isWireWallet).toBe(true)\r\n })\r\n\r\n test(\"rejects with WalletNotFoundError on timeout\", async () => {\r\n await expect(client.waitForProvider(200)).rejects.toThrow(WalletNotFoundError)\r\n })\r\n })\r\n})"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Errors.test.d.ts","sourceRoot":"","sources":["../../tests/Errors.test.ts"],"names":[],"mappings":""}
|