@injectivelabs/wallet-evm 0.0.2
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 +111 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/strategy/strategy.d.ts +40 -0
- package/dist/cjs/strategy/strategy.d.ts.map +1 -0
- package/dist/cjs/strategy/strategy.js +281 -0
- package/dist/cjs/strategy/strategy.js.map +1 -0
- package/dist/cjs/strategy/utils/Okx.d.ts +5 -0
- package/dist/cjs/strategy/utils/Okx.d.ts.map +1 -0
- package/dist/cjs/strategy/utils/Okx.js +64 -0
- package/dist/cjs/strategy/utils/Okx.js.map +1 -0
- package/dist/cjs/strategy/utils/bitget.d.ts +5 -0
- package/dist/cjs/strategy/utils/bitget.d.ts.map +1 -0
- package/dist/cjs/strategy/utils/bitget.js +58 -0
- package/dist/cjs/strategy/utils/bitget.js.map +1 -0
- package/dist/cjs/strategy/utils/index.d.ts +6 -0
- package/dist/cjs/strategy/utils/index.d.ts.map +1 -0
- package/dist/cjs/strategy/utils/index.js +14 -0
- package/dist/cjs/strategy/utils/index.js.map +1 -0
- package/dist/cjs/strategy/utils/metamask.d.ts +5 -0
- package/dist/cjs/strategy/utils/metamask.d.ts.map +1 -0
- package/dist/cjs/strategy/utils/metamask.js +59 -0
- package/dist/cjs/strategy/utils/metamask.js.map +1 -0
- package/dist/cjs/strategy/utils/phantom.d.ts +5 -0
- package/dist/cjs/strategy/utils/phantom.d.ts.map +1 -0
- package/dist/cjs/strategy/utils/phantom.js +64 -0
- package/dist/cjs/strategy/utils/phantom.js.map +1 -0
- package/dist/cjs/strategy/utils/trustWallet.d.ts +5 -0
- package/dist/cjs/strategy/utils/trustWallet.d.ts.map +1 -0
- package/dist/cjs/strategy/utils/trustWallet.js +64 -0
- package/dist/cjs/strategy/utils/trustWallet.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +5 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +53 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/strategy/strategy.d.ts +40 -0
- package/dist/esm/strategy/strategy.d.ts.map +1 -0
- package/dist/esm/strategy/strategy.js +235 -0
- package/dist/esm/strategy/strategy.js.map +1 -0
- package/dist/esm/strategy/utils/Okx.d.ts +5 -0
- package/dist/esm/strategy/utils/Okx.d.ts.map +1 -0
- package/dist/esm/strategy/utils/Okx.js +47 -0
- package/dist/esm/strategy/utils/Okx.js.map +1 -0
- package/dist/esm/strategy/utils/bitget.d.ts +5 -0
- package/dist/esm/strategy/utils/bitget.d.ts.map +1 -0
- package/dist/esm/strategy/utils/bitget.js +41 -0
- package/dist/esm/strategy/utils/bitget.js.map +1 -0
- package/dist/esm/strategy/utils/index.d.ts +6 -0
- package/dist/esm/strategy/utils/index.d.ts.map +1 -0
- package/dist/esm/strategy/utils/index.js +6 -0
- package/dist/esm/strategy/utils/index.js.map +1 -0
- package/dist/esm/strategy/utils/metamask.d.ts +5 -0
- package/dist/esm/strategy/utils/metamask.d.ts.map +1 -0
- package/dist/esm/strategy/utils/metamask.js +42 -0
- package/dist/esm/strategy/utils/metamask.js.map +1 -0
- package/dist/esm/strategy/utils/phantom.d.ts +5 -0
- package/dist/esm/strategy/utils/phantom.d.ts.map +1 -0
- package/dist/esm/strategy/utils/phantom.js +47 -0
- package/dist/esm/strategy/utils/phantom.js.map +1 -0
- package/dist/esm/strategy/utils/trustWallet.d.ts +5 -0
- package/dist/esm/strategy/utils/trustWallet.d.ts.map +1 -0
- package/dist/esm/strategy/utils/trustWallet.js +47 -0
- package/dist/esm/strategy/utils/trustWallet.js.map +1 -0
- package/dist/esm/utils/index.d.ts +5 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +39 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/strategy/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTrustWalletProvider = exports.getMetamaskProvider = exports.getPhantomProvider = exports.getBitGetProvider = exports.getOkxWalletProvider = void 0;
|
|
4
|
+
var Okx_1 = require("./Okx");
|
|
5
|
+
Object.defineProperty(exports, "getOkxWalletProvider", { enumerable: true, get: function () { return Okx_1.getOkxWalletProvider; } });
|
|
6
|
+
var bitget_1 = require("./bitget");
|
|
7
|
+
Object.defineProperty(exports, "getBitGetProvider", { enumerable: true, get: function () { return bitget_1.getBitGetProvider; } });
|
|
8
|
+
var phantom_1 = require("./phantom");
|
|
9
|
+
Object.defineProperty(exports, "getPhantomProvider", { enumerable: true, get: function () { return phantom_1.getPhantomProvider; } });
|
|
10
|
+
var metamask_1 = require("./metamask");
|
|
11
|
+
Object.defineProperty(exports, "getMetamaskProvider", { enumerable: true, get: function () { return metamask_1.getMetamaskProvider; } });
|
|
12
|
+
var trustWallet_1 = require("./trustWallet");
|
|
13
|
+
Object.defineProperty(exports, "getTrustWalletProvider", { enumerable: true, get: function () { return trustWallet_1.getTrustWalletProvider; } });
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/strategy/utils/index.ts"],"names":[],"mappings":";;;AAAA,6BAA4C;AAAnC,2GAAA,oBAAoB,OAAA;AAC7B,mCAA4C;AAAnC,2GAAA,iBAAiB,OAAA;AAC1B,qCAA8C;AAArC,6GAAA,kBAAkB,OAAA;AAC3B,uCAAgD;AAAvC,+GAAA,mBAAmB,OAAA;AAC5B,6CAAsD;AAA7C,qHAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metamask.d.ts","sourceRoot":"","sources":["../../../../src/strategy/utils/metamask.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EAEvB,MAAM,4BAA4B,CAAA;AAMnC,wBAAsB,mBAAmB,CAAC,EAAE,OAAO,EAAE;;CAAoB,mCAUxE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getMetamaskProvider = void 0;
|
|
13
|
+
const sdk_ts_1 = require("@injectivelabs/sdk-ts");
|
|
14
|
+
const $window = ((0, sdk_ts_1.isServerSide)()
|
|
15
|
+
? {}
|
|
16
|
+
: window);
|
|
17
|
+
function getMetamaskProvider() {
|
|
18
|
+
return __awaiter(this, arguments, void 0, function* ({ timeout } = { timeout: 3000 }) {
|
|
19
|
+
const provider = getMetamaskFromWindow();
|
|
20
|
+
if (provider) {
|
|
21
|
+
return provider;
|
|
22
|
+
}
|
|
23
|
+
return listenForMetamaskInitialized({
|
|
24
|
+
timeout,
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
exports.getMetamaskProvider = getMetamaskProvider;
|
|
29
|
+
function listenForMetamaskInitialized() {
|
|
30
|
+
return __awaiter(this, arguments, void 0, function* ({ timeout } = { timeout: 3000 }) {
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
const handleInitialization = () => {
|
|
33
|
+
resolve(getMetamaskFromWindow());
|
|
34
|
+
};
|
|
35
|
+
$window.addEventListener('ethereum#initialized', handleInitialization, {
|
|
36
|
+
once: true,
|
|
37
|
+
});
|
|
38
|
+
setTimeout(() => {
|
|
39
|
+
$window.removeEventListener('ethereum#initialized', handleInitialization);
|
|
40
|
+
resolve(null);
|
|
41
|
+
}, timeout);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function getMetamaskFromWindow() {
|
|
46
|
+
const injectedProviderExist = typeof window !== 'undefined' && typeof $window.ethereum !== 'undefined';
|
|
47
|
+
// No injected providers exist.
|
|
48
|
+
if (!injectedProviderExist) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if ($window.ethereum.isMetaMask) {
|
|
52
|
+
return $window.ethereum;
|
|
53
|
+
}
|
|
54
|
+
if ($window.providers) {
|
|
55
|
+
return $window.providers.find((p) => p.isMetaMask);
|
|
56
|
+
}
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=metamask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metamask.js","sourceRoot":"","sources":["../../../../src/strategy/utils/metamask.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAoD;AAMpD,MAAM,OAAO,GAAG,CAAC,IAAA,qBAAY,GAAE;IAC7B,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC,MAAM,CAAyC,CAAA;AAEnD,SAAsB,mBAAmB;yDAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;QACvE,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAA;QAExC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,OAAO,4BAA4B,CAAC;YAClC,OAAO;SACR,CAAoC,CAAA;IACvC,CAAC;CAAA;AAVD,kDAUC;AAED,SAAe,4BAA4B;yDAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;QACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,oBAAoB,GAAG,GAAG,EAAE;gBAChC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAA;YAClC,CAAC,CAAA;YAED,OAAO,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,oBAAoB,EAAE;gBACrE,IAAI,EAAE,IAAI;aACX,CAAC,CAAA;YAEF,UAAU,CAAC,GAAG,EAAE;gBACd,OAAO,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAA;gBACzE,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,EAAE,OAAO,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC;CAAA;AAED,SAAS,qBAAqB;IAC5B,MAAM,qBAAqB,GACzB,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW,CAAA;IAE1E,+BAA+B;IAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IACpD,CAAC;IAED,OAAM;AACR,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phantom.d.ts","sourceRoot":"","sources":["../../../../src/strategy/utils/phantom.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EAEvB,MAAM,4BAA4B,CAAA;AAMnC,wBAAsB,kBAAkB,CAAC,EAAE,OAAO,EAAE;;CAAoB,mCAUvE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getPhantomProvider = void 0;
|
|
13
|
+
const sdk_ts_1 = require("@injectivelabs/sdk-ts");
|
|
14
|
+
const $window = ((0, sdk_ts_1.isServerSide)()
|
|
15
|
+
? {}
|
|
16
|
+
: window);
|
|
17
|
+
function getPhantomProvider() {
|
|
18
|
+
return __awaiter(this, arguments, void 0, function* ({ timeout } = { timeout: 3000 }) {
|
|
19
|
+
const provider = getPhantomFromWindow();
|
|
20
|
+
if (provider) {
|
|
21
|
+
return provider;
|
|
22
|
+
}
|
|
23
|
+
return listenForPhantomInitialized({
|
|
24
|
+
timeout,
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
exports.getPhantomProvider = getPhantomProvider;
|
|
29
|
+
function listenForPhantomInitialized() {
|
|
30
|
+
return __awaiter(this, arguments, void 0, function* ({ timeout } = { timeout: 3000 }) {
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
const handleInitialization = () => {
|
|
33
|
+
resolve(getPhantomFromWindow());
|
|
34
|
+
};
|
|
35
|
+
$window.addEventListener('phantom#initialized', handleInitialization, {
|
|
36
|
+
once: true,
|
|
37
|
+
});
|
|
38
|
+
setTimeout(() => {
|
|
39
|
+
$window.removeEventListener('phantom#initialized', handleInitialization);
|
|
40
|
+
resolve(null);
|
|
41
|
+
}, timeout);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function getPhantomFromWindow() {
|
|
46
|
+
const injectedProviderExist = typeof window !== 'undefined' &&
|
|
47
|
+
(typeof $window.ethereum !== 'undefined' ||
|
|
48
|
+
typeof $window.phantom !== 'undefined');
|
|
49
|
+
// No injected providers exist.
|
|
50
|
+
if (!injectedProviderExist) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if ($window.phantom) {
|
|
54
|
+
return $window.phantom.ethereum;
|
|
55
|
+
}
|
|
56
|
+
if ($window.ethereum.isPhantom) {
|
|
57
|
+
return $window.ethereum;
|
|
58
|
+
}
|
|
59
|
+
if ($window.providers) {
|
|
60
|
+
return $window.providers.find((p) => p.isPhantom);
|
|
61
|
+
}
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=phantom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phantom.js","sourceRoot":"","sources":["../../../../src/strategy/utils/phantom.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAoD;AAMpD,MAAM,OAAO,GAAG,CAAC,IAAA,qBAAY,GAAE;IAC7B,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC,MAAM,CAAyC,CAAA;AAEnD,SAAsB,kBAAkB;yDAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;QACtE,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAA;QAEvC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,OAAO,2BAA2B,CAAC;YACjC,OAAO;SACR,CAAoC,CAAA;IACvC,CAAC;CAAA;AAVD,gDAUC;AAED,SAAe,2BAA2B;yDAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;QACxE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,oBAAoB,GAAG,GAAG,EAAE;gBAChC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAA;YACjC,CAAC,CAAA;YAED,OAAO,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,oBAAoB,EAAE;gBACpE,IAAI,EAAE,IAAI;aACX,CAAC,CAAA;YAEF,UAAU,CAAC,GAAG,EAAE;gBACd,OAAO,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAA;gBACxE,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,EAAE,OAAO,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC;CAAA;AAED,SAAS,oBAAoB;IAC3B,MAAM,qBAAqB,GACzB,OAAO,MAAM,KAAK,WAAW;QAC7B,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;YACtC,OAAO,OAAO,CAAC,OAAO,KAAK,WAAW,CAAC,CAAA;IAE3C,+BAA+B;IAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAA;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACnD,CAAC;IAED,OAAM;AACR,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trustWallet.d.ts","sourceRoot":"","sources":["../../../../src/strategy/utils/trustWallet.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EAEvB,MAAM,4BAA4B,CAAA;AAMnC,wBAAsB,sBAAsB,CAAC,EAAE,OAAO,EAAE;;CAAoB,mCAU3E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getTrustWalletProvider = void 0;
|
|
13
|
+
const sdk_ts_1 = require("@injectivelabs/sdk-ts");
|
|
14
|
+
const $window = ((0, sdk_ts_1.isServerSide)()
|
|
15
|
+
? {}
|
|
16
|
+
: window);
|
|
17
|
+
function getTrustWalletProvider() {
|
|
18
|
+
return __awaiter(this, arguments, void 0, function* ({ timeout } = { timeout: 3000 }) {
|
|
19
|
+
const provider = getTrustWalletFromWindow();
|
|
20
|
+
if (provider) {
|
|
21
|
+
return provider;
|
|
22
|
+
}
|
|
23
|
+
return listenForTrustWalletInitialized({
|
|
24
|
+
timeout,
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
exports.getTrustWalletProvider = getTrustWalletProvider;
|
|
29
|
+
function listenForTrustWalletInitialized() {
|
|
30
|
+
return __awaiter(this, arguments, void 0, function* ({ timeout } = { timeout: 3000 }) {
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
const handleInitialization = () => {
|
|
33
|
+
resolve(getTrustWalletFromWindow());
|
|
34
|
+
};
|
|
35
|
+
$window.addEventListener('trustwallet#initialized', handleInitialization, {
|
|
36
|
+
once: true,
|
|
37
|
+
});
|
|
38
|
+
setTimeout(() => {
|
|
39
|
+
$window.removeEventListener('trustwallet#initialized', handleInitialization);
|
|
40
|
+
resolve(null);
|
|
41
|
+
}, timeout);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function getTrustWalletFromWindow() {
|
|
46
|
+
const injectedProviderExist = typeof window !== 'undefined' &&
|
|
47
|
+
(typeof $window.ethereum !== 'undefined' ||
|
|
48
|
+
typeof $window.trustWallet !== 'undefined');
|
|
49
|
+
// No injected providers exist.
|
|
50
|
+
if (!injectedProviderExist) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if ($window.trustWallet) {
|
|
54
|
+
return $window.trustWallet;
|
|
55
|
+
}
|
|
56
|
+
if ($window.ethereum.isTrustWallet || $window.ethereum.isTrust) {
|
|
57
|
+
return $window.ethereum;
|
|
58
|
+
}
|
|
59
|
+
if ($window.providers) {
|
|
60
|
+
return $window.providers.find((p) => p.isTrustWallet);
|
|
61
|
+
}
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=trustWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trustWallet.js","sourceRoot":"","sources":["../../../../src/strategy/utils/trustWallet.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAoD;AAMpD,MAAM,OAAO,GAAG,CAAC,IAAA,qBAAY,GAAE;IAC7B,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC,MAAM,CAAyC,CAAA;AAEnD,SAAsB,sBAAsB;yDAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;QAC1E,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAA;QAE3C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,OAAO,+BAA+B,CAAC;YACrC,OAAO;SACR,CAAoC,CAAA;IACvC,CAAC;CAAA;AAVD,wDAUC;AAED,SAAe,+BAA+B;yDAC5C,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;QAE/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,oBAAoB,GAAG,GAAG,EAAE;gBAChC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAA;YACrC,CAAC,CAAA;YAED,OAAO,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,oBAAoB,EAAE;gBACxE,IAAI,EAAE,IAAI;aACX,CAAC,CAAA;YAEF,UAAU,CAAC,GAAG,EAAE;gBACd,OAAO,CAAC,mBAAmB,CACzB,yBAAyB,EACzB,oBAAoB,CACrB,CAAA;gBACD,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,EAAE,OAAO,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC;CAAA;AAED,SAAS,wBAAwB;IAC/B,MAAM,qBAAqB,GACzB,OAAO,MAAM,KAAK,WAAW;QAC7B,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;YACtC,OAAO,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,CAAA;IAE/C,+BAA+B;IAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,WAAW,CAAA;IAC5B,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC/D,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;IACvD,CAAC;IAED,OAAM;AACR,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { EthereumChainId } from '@injectivelabs/ts-types';
|
|
3
|
+
export declare const getEthersProviderFromMetamask: () => Promise<ethers.BrowserProvider>;
|
|
4
|
+
export declare const updateMetamaskNetwork: (chainId: EthereumChainId) => Promise<any>;
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAIzD,eAAO,MAAM,6BAA6B,uCAYzC,CAAA;AAED,eAAO,MAAM,qBAAqB,YAAmB,eAAe,iBA0BnE,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.updateMetamaskNetwork = exports.getEthersProviderFromMetamask = void 0;
|
|
13
|
+
const ethers_1 = require("ethers");
|
|
14
|
+
const exceptions_1 = require("@injectivelabs/exceptions");
|
|
15
|
+
const metamask_1 = require("../strategy/utils/metamask");
|
|
16
|
+
const getEthersProviderFromMetamask = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
try {
|
|
18
|
+
const provider = (yield (0, metamask_1.getMetamaskProvider)());
|
|
19
|
+
if (!provider) {
|
|
20
|
+
throw new exceptions_1.WalletException(new Error('Please install Metamask Extension'));
|
|
21
|
+
}
|
|
22
|
+
return new ethers_1.ethers.BrowserProvider(provider, 'any');
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
throw new exceptions_1.WalletException(new Error('Please install Metamask Extension'));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
exports.getEthersProviderFromMetamask = getEthersProviderFromMetamask;
|
|
29
|
+
const updateMetamaskNetwork = (chainId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
|
+
try {
|
|
31
|
+
const provider = (yield (0, metamask_1.getMetamaskProvider)());
|
|
32
|
+
if (!provider) {
|
|
33
|
+
throw new exceptions_1.WalletException(new Error('Please install Metamask Extension'));
|
|
34
|
+
}
|
|
35
|
+
const chainIdToHex = chainId.toString(16);
|
|
36
|
+
return yield Promise.race([
|
|
37
|
+
provider.request({
|
|
38
|
+
method: 'wallet_switchEthereumChain',
|
|
39
|
+
params: [{ chainId: `0x${chainIdToHex}` }],
|
|
40
|
+
}),
|
|
41
|
+
new Promise((resolve) => provider.on('change', ({ chain }) => {
|
|
42
|
+
if ((chain === null || chain === void 0 ? void 0 : chain.id) === chainIdToHex) {
|
|
43
|
+
resolve();
|
|
44
|
+
}
|
|
45
|
+
})),
|
|
46
|
+
]);
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
throw new exceptions_1.WalletException(new Error('Please update your Metamask network'));
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
exports.updateMetamaskNetwork = updateMetamaskNetwork;
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAA+B;AAC/B,0DAA2D;AAE3D,yDAAgE;AAGzD,MAAM,6BAA6B,GAAG,GAAS,EAAE;IACtD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAA,8BAAmB,GAAE,CAA2B,CAAA;QAExE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,4BAAe,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;QAC3E,CAAC;QAED,OAAO,IAAI,eAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACpD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,4BAAe,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;IAC3E,CAAC;AACH,CAAC,CAAA,CAAA;AAZY,QAAA,6BAA6B,iCAYzC;AAEM,MAAM,qBAAqB,GAAG,CAAO,OAAwB,EAAE,EAAE;IACtE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAA,8BAAmB,GAAE,CAA2B,CAAA;QAExE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,4BAAe,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;QAC3E,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAEzC,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACxB,QAAQ,CAAC,OAAO,CAAC;gBACf,MAAM,EAAE,4BAA4B;gBACpC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,EAAE,CAAC;aAC3C,CAAC;YACF,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAC5B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAO,EAAE,EAAE;gBACvC,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,MAAK,YAAY,EAAE,CAAC;oBAC/B,OAAO,EAAE,CAAA;gBACX,CAAC;YACH,CAAC,CAAC,CACH;SACF,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,4BAAe,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAA;IAC7E,CAAC;AACH,CAAC,CAAA,CAAA;AA1BY,QAAA,qBAAqB,yBA0BjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACpE,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACpE,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ErrorContext, ConcreteException } from '@injectivelabs/exceptions';
|
|
2
|
+
import { Wallet, StdSignDoc, WalletDeviceType, BaseConcreteStrategy, SendTransactionOptions, ConcreteWalletStrategy, ConcreteWalletStrategyArgs, ConcreteEthereumWalletStrategyArgs } from '@injectivelabs/wallet-base';
|
|
3
|
+
import { AccountAddress, EthereumChainId } from '@injectivelabs/ts-types';
|
|
4
|
+
import { TxRaw, TxResponse, DirectSignResponse, AminoSignResponse } from '@injectivelabs/sdk-ts';
|
|
5
|
+
export declare class EvmWallet extends BaseConcreteStrategy implements ConcreteWalletStrategy {
|
|
6
|
+
wallet?: Wallet;
|
|
7
|
+
constructor(args: (ConcreteWalletStrategyArgs | ConcreteEthereumWalletStrategyArgs) & {
|
|
8
|
+
wallet: Wallet;
|
|
9
|
+
});
|
|
10
|
+
EvmWalletException(error: Error, context?: ErrorContext): ConcreteException;
|
|
11
|
+
getWalletDeviceType(): Promise<WalletDeviceType>;
|
|
12
|
+
enable(): Promise<boolean>;
|
|
13
|
+
disconnect(): Promise<void>;
|
|
14
|
+
getAddresses(): Promise<string[]>;
|
|
15
|
+
getSessionOrConfirm(address: AccountAddress): Promise<string>;
|
|
16
|
+
sendEthereumTransaction(transaction: unknown, _options: {
|
|
17
|
+
address: AccountAddress;
|
|
18
|
+
ethereumChainId: EthereumChainId;
|
|
19
|
+
}): Promise<string>;
|
|
20
|
+
sendTransaction(transaction: TxRaw, options: SendTransactionOptions): Promise<TxResponse>;
|
|
21
|
+
signEip712TypedData(eip712json: string, address: AccountAddress): Promise<string>;
|
|
22
|
+
signAminoCosmosTransaction(_transaction: {
|
|
23
|
+
address: string;
|
|
24
|
+
signDoc: StdSignDoc;
|
|
25
|
+
}): Promise<AminoSignResponse>;
|
|
26
|
+
signCosmosTransaction(_transaction: {
|
|
27
|
+
txRaw: TxRaw;
|
|
28
|
+
accountNumber: number;
|
|
29
|
+
chainId: string;
|
|
30
|
+
address: string;
|
|
31
|
+
}): Promise<DirectSignResponse>;
|
|
32
|
+
signArbitrary(signer: AccountAddress, data: string | Uint8Array): Promise<string>;
|
|
33
|
+
getEthereumChainId(): Promise<string>;
|
|
34
|
+
getEthereumTransactionReceipt(txHash: string): Promise<string>;
|
|
35
|
+
getPubKey(): Promise<string>;
|
|
36
|
+
onChainIdChanged(callback: (chain: string) => void): Promise<void>;
|
|
37
|
+
onAccountChange(callback: (account: AccountAddress) => void): Promise<void>;
|
|
38
|
+
private getEthereum;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/strategy/strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,EAGZ,iBAAiB,EAMlB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,MAAM,EACN,UAAU,EAEV,gBAAgB,EAEhB,oBAAoB,EACpB,sBAAsB,EAEtB,sBAAsB,EACtB,0BAA0B,EAC1B,kCAAkC,EACnC,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EACL,KAAK,EAGL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,uBAAuB,CAAA;AAiB9B,qBAAa,SAAU,SAAQ,oBAAqB,YAAW,sBAAsB;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAA;gBAGpB,IAAI,EAAE,CAAC,0BAA0B,GAAG,kCAAkC,CAAC,GAAG;QACxE,MAAM,EAAE,MAAM,CAAA;KACf;IAaI,kBAAkB,CACvB,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,YAAY,GACrB,iBAAiB;IAwBd,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIhD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAInB,UAAU;IAsBjB,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBjC,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ7D,uBAAuB,CAC3B,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,eAAe,EAAE,eAAe,CAAA;KAAE,GACtE,OAAO,CAAC,MAAM,CAAC;IAiBZ,eAAe,CACnB,WAAW,EAAE,KAAK,EAClB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,UAAU,CAAC;IAyBhB,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC;IAiBZ,0BAA0B,CAAC,YAAY,EAAE;QAC7C,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,UAAU,CAAA;KACpB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAYxB,qBAAqB,CAAC,YAAY,EAAE;QACxC,KAAK,EAAE,KAAK,CAAA;QACZ,aAAa,EAAE,MAAM,CAAA;QACrB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;KAChB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAWzB,aAAa,CACjB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,GAAG,UAAU,GACxB,OAAO,CAAC,MAAM,CAAC;IAmBZ,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAcrC,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8B9D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAM5B,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlE,eAAe,CACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAC1C,OAAO,CAAC,IAAI,CAAC;YAUF,WAAW;CA2B1B"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/* eslint-disable class-methods-use-this */
|
|
2
|
+
import { ErrorType, WalletException, BitGetException, MetamaskException, OkxWalletException, UnspecifiedErrorCode, TransactionException, TrustWalletException, } from '@injectivelabs/exceptions';
|
|
3
|
+
import { Wallet, WalletAction, WalletDeviceType, WalletEventListener, BaseConcreteStrategy, } from '@injectivelabs/wallet-base';
|
|
4
|
+
import { sleep } from '@injectivelabs/utils';
|
|
5
|
+
import { toUtf8, TxGrpcApi } from '@injectivelabs/sdk-ts';
|
|
6
|
+
import { getBitGetProvider, getPhantomProvider, getMetamaskProvider, getOkxWalletProvider, getTrustWalletProvider, } from './utils';
|
|
7
|
+
const evmWallets = [
|
|
8
|
+
Wallet.BitGet,
|
|
9
|
+
Wallet.Phantom,
|
|
10
|
+
Wallet.Metamask,
|
|
11
|
+
Wallet.OkxWallet,
|
|
12
|
+
Wallet.TrustWallet,
|
|
13
|
+
];
|
|
14
|
+
export class EvmWallet extends BaseConcreteStrategy {
|
|
15
|
+
wallet;
|
|
16
|
+
constructor(args) {
|
|
17
|
+
super(args);
|
|
18
|
+
if (!evmWallets.includes(args.wallet)) {
|
|
19
|
+
throw new WalletException(new Error(`Evm Wallet for ${args.wallet} is not supported.`));
|
|
20
|
+
}
|
|
21
|
+
this.wallet = args.wallet;
|
|
22
|
+
}
|
|
23
|
+
EvmWalletException(error, context) {
|
|
24
|
+
if (this.wallet === Wallet.Metamask) {
|
|
25
|
+
return new MetamaskException(error, context);
|
|
26
|
+
}
|
|
27
|
+
if (this.wallet === Wallet.BitGet) {
|
|
28
|
+
return new BitGetException(error, context);
|
|
29
|
+
}
|
|
30
|
+
if (this.wallet === Wallet.OkxWallet) {
|
|
31
|
+
return new OkxWalletException(error, context);
|
|
32
|
+
}
|
|
33
|
+
if (this.wallet === Wallet.Phantom) {
|
|
34
|
+
return new MetamaskException(error, context);
|
|
35
|
+
}
|
|
36
|
+
if (this.wallet === Wallet.TrustWallet) {
|
|
37
|
+
return new TrustWalletException(error, context);
|
|
38
|
+
}
|
|
39
|
+
return new WalletException(error, context);
|
|
40
|
+
}
|
|
41
|
+
async getWalletDeviceType() {
|
|
42
|
+
return Promise.resolve(WalletDeviceType.Browser);
|
|
43
|
+
}
|
|
44
|
+
async enable() {
|
|
45
|
+
return Promise.resolve(true);
|
|
46
|
+
}
|
|
47
|
+
async disconnect() {
|
|
48
|
+
if (this.listeners[WalletEventListener.AccountChange]) {
|
|
49
|
+
const ethereum = await this.getEthereum();
|
|
50
|
+
ethereum.removeListener('accountsChanged', this.listeners[WalletEventListener.AccountChange]);
|
|
51
|
+
}
|
|
52
|
+
if (this.listeners[WalletEventListener.ChainIdChange]) {
|
|
53
|
+
const ethereum = await this.getEthereum();
|
|
54
|
+
ethereum.removeListener('chainChanged', this.listeners[WalletEventListener.ChainIdChange]);
|
|
55
|
+
}
|
|
56
|
+
this.listeners = {};
|
|
57
|
+
}
|
|
58
|
+
async getAddresses() {
|
|
59
|
+
const ethereum = await this.getEthereum();
|
|
60
|
+
try {
|
|
61
|
+
return await ethereum.request({
|
|
62
|
+
method: 'eth_requestAccounts',
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
throw this.EvmWalletException(new Error(e.message), {
|
|
67
|
+
code: UnspecifiedErrorCode,
|
|
68
|
+
type: ErrorType.WalletError,
|
|
69
|
+
contextModule: WalletAction.GetAccounts,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// eslint-disable-next-line class-methods-use-this
|
|
74
|
+
async getSessionOrConfirm(address) {
|
|
75
|
+
return Promise.resolve(`0x${Buffer.from(`Confirmation for ${address} at time: ${Date.now()}`).toString('hex')}`);
|
|
76
|
+
}
|
|
77
|
+
async sendEthereumTransaction(transaction, _options) {
|
|
78
|
+
const ethereum = await this.getEthereum();
|
|
79
|
+
try {
|
|
80
|
+
return await ethereum.request({
|
|
81
|
+
method: 'eth_sendTransaction',
|
|
82
|
+
params: [transaction],
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
throw this.EvmWalletException(new Error(e.message), {
|
|
87
|
+
code: UnspecifiedErrorCode,
|
|
88
|
+
type: ErrorType.WalletError,
|
|
89
|
+
contextModule: WalletAction.SendEthereumTransaction,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async sendTransaction(transaction, options) {
|
|
94
|
+
const { endpoints, txTimeout } = options;
|
|
95
|
+
if (!endpoints) {
|
|
96
|
+
throw new WalletException(new Error('You have to pass endpoints within the options for using Ethereum native wallets'));
|
|
97
|
+
}
|
|
98
|
+
const txApi = new TxGrpcApi(endpoints.grpc);
|
|
99
|
+
const response = await txApi.broadcast(transaction, { txTimeout });
|
|
100
|
+
if (response.code !== 0) {
|
|
101
|
+
throw new TransactionException(new Error(response.rawLog), {
|
|
102
|
+
code: UnspecifiedErrorCode,
|
|
103
|
+
contextCode: response.code,
|
|
104
|
+
contextModule: response.codespace,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return response;
|
|
108
|
+
}
|
|
109
|
+
async signEip712TypedData(eip712json, address) {
|
|
110
|
+
const ethereum = await this.getEthereum();
|
|
111
|
+
try {
|
|
112
|
+
return await ethereum.request({
|
|
113
|
+
method: 'eth_signTypedData_v4',
|
|
114
|
+
params: [address, eip712json],
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
throw new MetamaskException(new Error(e.message), {
|
|
119
|
+
code: UnspecifiedErrorCode,
|
|
120
|
+
type: ErrorType.WalletError,
|
|
121
|
+
contextModule: WalletAction.SignTransaction,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async signAminoCosmosTransaction(_transaction) {
|
|
126
|
+
throw new WalletException(new Error('This wallet does not support signing Cosmos transactions'), {
|
|
127
|
+
code: UnspecifiedErrorCode,
|
|
128
|
+
type: ErrorType.WalletError,
|
|
129
|
+
contextModule: WalletAction.SignTransaction,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
// eslint-disable-next-line class-methods-use-this
|
|
133
|
+
async signCosmosTransaction(_transaction) {
|
|
134
|
+
throw new WalletException(new Error('This wallet does not support signing Cosmos transactions'), {
|
|
135
|
+
code: UnspecifiedErrorCode,
|
|
136
|
+
type: ErrorType.WalletError,
|
|
137
|
+
contextModule: WalletAction.SignTransaction,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
async signArbitrary(signer, data) {
|
|
141
|
+
const ethereum = await this.getEthereum();
|
|
142
|
+
try {
|
|
143
|
+
const signature = await ethereum.request({
|
|
144
|
+
method: 'personal_sign',
|
|
145
|
+
params: [toUtf8(data), signer],
|
|
146
|
+
});
|
|
147
|
+
return signature;
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
throw this.EvmWalletException(new Error(e.message), {
|
|
151
|
+
code: UnspecifiedErrorCode,
|
|
152
|
+
type: ErrorType.WalletError,
|
|
153
|
+
contextModule: WalletAction.SignArbitrary,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async getEthereumChainId() {
|
|
158
|
+
const ethereum = await this.getEthereum();
|
|
159
|
+
try {
|
|
160
|
+
return ethereum.request({ method: 'eth_chainId' });
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
throw this.EvmWalletException(new Error(e.message), {
|
|
164
|
+
code: UnspecifiedErrorCode,
|
|
165
|
+
type: ErrorType.WalletError,
|
|
166
|
+
contextModule: WalletAction.GetChainId,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async getEthereumTransactionReceipt(txHash) {
|
|
171
|
+
const ethereum = await this.getEthereum();
|
|
172
|
+
const interval = 1000;
|
|
173
|
+
const transactionReceiptRetry = async () => {
|
|
174
|
+
const receipt = await ethereum.request({
|
|
175
|
+
method: 'eth_getTransactionReceipt',
|
|
176
|
+
params: [txHash],
|
|
177
|
+
});
|
|
178
|
+
if (!receipt) {
|
|
179
|
+
await sleep(interval);
|
|
180
|
+
await transactionReceiptRetry();
|
|
181
|
+
}
|
|
182
|
+
return receipt;
|
|
183
|
+
};
|
|
184
|
+
try {
|
|
185
|
+
return await transactionReceiptRetry();
|
|
186
|
+
}
|
|
187
|
+
catch (e) {
|
|
188
|
+
throw this.EvmWalletException(new Error(e.message), {
|
|
189
|
+
code: UnspecifiedErrorCode,
|
|
190
|
+
type: ErrorType.WalletError,
|
|
191
|
+
contextModule: WalletAction.GetEthereumTransactionReceipt,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// eslint-disable-next-line class-methods-use-this
|
|
196
|
+
async getPubKey() {
|
|
197
|
+
throw new WalletException(new Error('You can only fetch PubKey from Cosmos native wallets'));
|
|
198
|
+
}
|
|
199
|
+
async onChainIdChanged(callback) {
|
|
200
|
+
const ethereum = await this.getEthereum();
|
|
201
|
+
this.listeners = {
|
|
202
|
+
[WalletEventListener.ChainIdChange]: callback,
|
|
203
|
+
};
|
|
204
|
+
ethereum.on('chainChanged', callback);
|
|
205
|
+
}
|
|
206
|
+
async onAccountChange(callback) {
|
|
207
|
+
const ethereum = await this.getEthereum();
|
|
208
|
+
this.listeners = {
|
|
209
|
+
[WalletEventListener.AccountChange]: callback,
|
|
210
|
+
};
|
|
211
|
+
ethereum.on('accountsChanged', callback);
|
|
212
|
+
}
|
|
213
|
+
async getEthereum() {
|
|
214
|
+
const provider = this.wallet === Wallet.Metamask
|
|
215
|
+
? await getMetamaskProvider()
|
|
216
|
+
: this.wallet === Wallet.Phantom
|
|
217
|
+
? await getPhantomProvider()
|
|
218
|
+
: this.wallet === Wallet.BitGet
|
|
219
|
+
? await getBitGetProvider()
|
|
220
|
+
: this.wallet === Wallet.OkxWallet
|
|
221
|
+
? await getOkxWalletProvider()
|
|
222
|
+
: this.wallet === Wallet.TrustWallet
|
|
223
|
+
? await getTrustWalletProvider()
|
|
224
|
+
: undefined;
|
|
225
|
+
if (!provider) {
|
|
226
|
+
throw this.EvmWalletException(new Error(`Please install the ${this.wallet} wallet extension.`), {
|
|
227
|
+
code: UnspecifiedErrorCode,
|
|
228
|
+
type: ErrorType.WalletNotInstalledError,
|
|
229
|
+
contextModule: WalletAction.GetAccounts,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
return provider;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=strategy.js.map
|