@injectivelabs/wallet-evm 1.15.0 → 1.15.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.
Files changed (39) hide show
  1. package/dist/cjs/index.d.ts +3 -0
  2. package/dist/cjs/index.js +21 -0
  3. package/dist/cjs/package.json +3 -0
  4. package/dist/cjs/strategy/strategy.d.ts +39 -0
  5. package/dist/cjs/strategy/strategy.js +239 -0
  6. package/dist/cjs/strategy/utils/Okx.d.ts +4 -0
  7. package/dist/cjs/strategy/utils/Okx.js +49 -0
  8. package/dist/cjs/strategy/utils/bitget.d.ts +4 -0
  9. package/dist/cjs/strategy/utils/bitget.js +43 -0
  10. package/dist/cjs/strategy/utils/index.d.ts +5 -0
  11. package/dist/cjs/strategy/utils/index.js +13 -0
  12. package/dist/cjs/strategy/utils/metamask.d.ts +4 -0
  13. package/dist/cjs/strategy/utils/metamask.js +44 -0
  14. package/dist/cjs/strategy/utils/phantom.d.ts +4 -0
  15. package/dist/cjs/strategy/utils/phantom.js +49 -0
  16. package/dist/cjs/strategy/utils/trustWallet.d.ts +4 -0
  17. package/dist/cjs/strategy/utils/trustWallet.js +49 -0
  18. package/dist/cjs/utils/index.d.ts +4 -0
  19. package/dist/cjs/utils/index.js +69 -0
  20. package/dist/esm/index.d.ts +3 -0
  21. package/dist/esm/index.js +3 -0
  22. package/dist/esm/package.json +3 -0
  23. package/dist/esm/strategy/strategy.d.ts +39 -0
  24. package/dist/esm/strategy/strategy.js +235 -0
  25. package/dist/esm/strategy/utils/Okx.d.ts +4 -0
  26. package/dist/esm/strategy/utils/Okx.js +46 -0
  27. package/dist/esm/strategy/utils/bitget.d.ts +4 -0
  28. package/dist/esm/strategy/utils/bitget.js +40 -0
  29. package/dist/esm/strategy/utils/index.d.ts +5 -0
  30. package/dist/esm/strategy/utils/index.js +5 -0
  31. package/dist/esm/strategy/utils/metamask.d.ts +4 -0
  32. package/dist/esm/strategy/utils/metamask.js +41 -0
  33. package/dist/esm/strategy/utils/phantom.d.ts +4 -0
  34. package/dist/esm/strategy/utils/phantom.js +46 -0
  35. package/dist/esm/strategy/utils/trustWallet.d.ts +4 -0
  36. package/dist/esm/strategy/utils/trustWallet.js +46 -0
  37. package/dist/esm/utils/index.d.ts +4 -0
  38. package/dist/esm/utils/index.js +64 -0
  39. package/package.json +8 -8
@@ -0,0 +1,3 @@
1
+ export { EvmWallet as EvmWalletStrategy } from './strategy/strategy.js';
2
+ export * from './strategy/utils/index.js';
3
+ export * from './utils/index.js';
@@ -0,0 +1,21 @@
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.EvmWalletStrategy = void 0;
18
+ var strategy_js_1 = require("./strategy/strategy.js");
19
+ Object.defineProperty(exports, "EvmWalletStrategy", { enumerable: true, get: function () { return strategy_js_1.EvmWallet; } });
20
+ __exportStar(require("./strategy/utils/index.js"), exports);
21
+ __exportStar(require("./utils/index.js"), exports);
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,39 @@
1
+ import { TxRaw, TxResponse, DirectSignResponse, AminoSignResponse } from '@injectivelabs/sdk-ts';
2
+ import { ErrorContext, ThrownException } from '@injectivelabs/exceptions';
3
+ import { Wallet, StdSignDoc, WalletDeviceType, BaseConcreteStrategy, SendTransactionOptions, ConcreteWalletStrategy, ConcreteWalletStrategyArgs, ConcreteEthereumWalletStrategyArgs } from '@injectivelabs/wallet-base';
4
+ import { AccountAddress, EthereumChainId } from '@injectivelabs/ts-types';
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): ThrownException;
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 | string[]) => void): Promise<void>;
38
+ private getEthereum;
39
+ }
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EvmWallet = void 0;
4
+ /* eslint-disable class-methods-use-this */
5
+ const wallet_base_1 = require("@injectivelabs/wallet-base");
6
+ const sdk_ts_1 = require("@injectivelabs/sdk-ts");
7
+ const exceptions_1 = require("@injectivelabs/exceptions");
8
+ const wallet_base_2 = require("@injectivelabs/wallet-base");
9
+ const utils_1 = require("@injectivelabs/utils");
10
+ const index_js_1 = require("./utils/index.js");
11
+ class EvmWallet extends wallet_base_2.BaseConcreteStrategy {
12
+ wallet;
13
+ constructor(args) {
14
+ super(args);
15
+ if (!(0, wallet_base_1.isEvmBrowserWallet)(args.wallet)) {
16
+ throw new exceptions_1.WalletException(new Error(`Evm Wallet for ${(0, utils_1.capitalize)(args.wallet)} is not supported.`));
17
+ }
18
+ this.wallet = args.wallet;
19
+ }
20
+ EvmWalletException(error, context) {
21
+ if (this.wallet === wallet_base_2.Wallet.Metamask) {
22
+ return new exceptions_1.MetamaskException(error, context);
23
+ }
24
+ if (this.wallet === wallet_base_2.Wallet.BitGet) {
25
+ return new exceptions_1.BitGetException(error, context);
26
+ }
27
+ if (this.wallet === wallet_base_2.Wallet.OkxWallet) {
28
+ return new exceptions_1.OkxWalletException(error, context);
29
+ }
30
+ if (this.wallet === wallet_base_2.Wallet.Phantom) {
31
+ return new exceptions_1.MetamaskException(error, context);
32
+ }
33
+ if (this.wallet === wallet_base_2.Wallet.TrustWallet) {
34
+ return new exceptions_1.TrustWalletException(error, context);
35
+ }
36
+ return new exceptions_1.WalletException(error, context);
37
+ }
38
+ async getWalletDeviceType() {
39
+ return Promise.resolve(wallet_base_2.WalletDeviceType.Browser);
40
+ }
41
+ async enable() {
42
+ return Promise.resolve(true);
43
+ }
44
+ async disconnect() {
45
+ if (this.listeners[wallet_base_2.WalletEventListener.AccountChange]) {
46
+ const ethereum = await this.getEthereum();
47
+ ethereum.removeListener('accountsChanged', this.listeners[wallet_base_2.WalletEventListener.AccountChange]);
48
+ }
49
+ if (this.listeners[wallet_base_2.WalletEventListener.ChainIdChange]) {
50
+ const ethereum = await this.getEthereum();
51
+ ethereum.removeListener('chainChanged', this.listeners[wallet_base_2.WalletEventListener.ChainIdChange]);
52
+ }
53
+ this.listeners = {};
54
+ }
55
+ async getAddresses() {
56
+ const ethereum = await this.getEthereum();
57
+ try {
58
+ return (await ethereum.request({
59
+ method: 'eth_requestAccounts',
60
+ }));
61
+ }
62
+ catch (e) {
63
+ throw this.EvmWalletException(new Error(e.message), {
64
+ code: exceptions_1.UnspecifiedErrorCode,
65
+ type: exceptions_1.ErrorType.WalletError,
66
+ contextModule: wallet_base_2.WalletAction.GetAccounts,
67
+ });
68
+ }
69
+ }
70
+ // eslint-disable-next-line class-methods-use-this
71
+ async getSessionOrConfirm(address) {
72
+ return Promise.resolve(`0x${Buffer.from(`Confirmation for ${address} at time: ${Date.now()}`).toString('hex')}`);
73
+ }
74
+ async sendEthereumTransaction(transaction, _options) {
75
+ const ethereum = await this.getEthereum();
76
+ try {
77
+ return (await ethereum.request({
78
+ method: 'eth_sendTransaction',
79
+ params: [transaction],
80
+ }));
81
+ }
82
+ catch (e) {
83
+ throw this.EvmWalletException(new Error(e.message), {
84
+ code: exceptions_1.UnspecifiedErrorCode,
85
+ type: exceptions_1.ErrorType.WalletError,
86
+ contextModule: wallet_base_2.WalletAction.SendEthereumTransaction,
87
+ });
88
+ }
89
+ }
90
+ async sendTransaction(transaction, options) {
91
+ const { endpoints, txTimeout } = options;
92
+ if (!endpoints) {
93
+ throw new exceptions_1.WalletException(new Error('You have to pass endpoints within the options for using Ethereum native wallets'));
94
+ }
95
+ const txApi = new sdk_ts_1.TxGrpcApi(endpoints.grpc);
96
+ const response = await txApi.broadcast(transaction, { txTimeout });
97
+ if (response.code !== 0) {
98
+ throw new exceptions_1.TransactionException(new Error(response.rawLog), {
99
+ code: exceptions_1.UnspecifiedErrorCode,
100
+ contextCode: response.code,
101
+ contextModule: response.codespace,
102
+ });
103
+ }
104
+ return response;
105
+ }
106
+ async signEip712TypedData(eip712json, address) {
107
+ const ethereum = await this.getEthereum();
108
+ try {
109
+ return (await ethereum.request({
110
+ method: 'eth_signTypedData_v4',
111
+ params: [address, eip712json],
112
+ }));
113
+ }
114
+ catch (e) {
115
+ if (e.message.includes('Ledger: The signature doesnt match the right address')) {
116
+ throw new exceptions_1.MetamaskException(new Error('Please connect directly with Ledger to sign this transaction'), {
117
+ code: exceptions_1.UnspecifiedErrorCode,
118
+ type: exceptions_1.ErrorType.WalletError,
119
+ contextModule: wallet_base_2.WalletAction.SignTransaction,
120
+ });
121
+ }
122
+ throw new exceptions_1.MetamaskException(new Error(e.message), {
123
+ code: exceptions_1.UnspecifiedErrorCode,
124
+ type: exceptions_1.ErrorType.WalletError,
125
+ contextModule: wallet_base_2.WalletAction.SignTransaction,
126
+ });
127
+ }
128
+ }
129
+ async signAminoCosmosTransaction(_transaction) {
130
+ throw new exceptions_1.WalletException(new Error('This wallet does not support signing Cosmos transactions'), {
131
+ code: exceptions_1.UnspecifiedErrorCode,
132
+ type: exceptions_1.ErrorType.WalletError,
133
+ contextModule: wallet_base_2.WalletAction.SignTransaction,
134
+ });
135
+ }
136
+ // eslint-disable-next-line class-methods-use-this
137
+ async signCosmosTransaction(_transaction) {
138
+ throw new exceptions_1.WalletException(new Error('This wallet does not support signing Cosmos transactions'), {
139
+ code: exceptions_1.UnspecifiedErrorCode,
140
+ type: exceptions_1.ErrorType.WalletError,
141
+ contextModule: wallet_base_2.WalletAction.SignTransaction,
142
+ });
143
+ }
144
+ async signArbitrary(signer, data) {
145
+ const ethereum = await this.getEthereum();
146
+ try {
147
+ const signature = await ethereum.request({
148
+ method: 'personal_sign',
149
+ params: [(0, sdk_ts_1.toUtf8)(data), signer],
150
+ });
151
+ return signature;
152
+ }
153
+ catch (e) {
154
+ throw this.EvmWalletException(new Error(e.message), {
155
+ code: exceptions_1.UnspecifiedErrorCode,
156
+ type: exceptions_1.ErrorType.WalletError,
157
+ contextModule: wallet_base_2.WalletAction.SignArbitrary,
158
+ });
159
+ }
160
+ }
161
+ async getEthereumChainId() {
162
+ const ethereum = await this.getEthereum();
163
+ try {
164
+ return ethereum.request({ method: 'eth_chainId' });
165
+ }
166
+ catch (e) {
167
+ throw this.EvmWalletException(new Error(e.message), {
168
+ code: exceptions_1.UnspecifiedErrorCode,
169
+ type: exceptions_1.ErrorType.WalletError,
170
+ contextModule: wallet_base_2.WalletAction.GetChainId,
171
+ });
172
+ }
173
+ }
174
+ async getEthereumTransactionReceipt(txHash) {
175
+ const ethereum = await this.getEthereum();
176
+ const interval = 1000;
177
+ const transactionReceiptRetry = async () => {
178
+ const receipt = (await ethereum.request({
179
+ method: 'eth_getTransactionReceipt',
180
+ params: [txHash],
181
+ }));
182
+ if (!receipt) {
183
+ await (0, utils_1.sleep)(interval);
184
+ await transactionReceiptRetry();
185
+ }
186
+ return receipt;
187
+ };
188
+ try {
189
+ return await transactionReceiptRetry();
190
+ }
191
+ catch (e) {
192
+ throw this.EvmWalletException(new Error(e.message), {
193
+ code: exceptions_1.UnspecifiedErrorCode,
194
+ type: exceptions_1.ErrorType.WalletError,
195
+ contextModule: wallet_base_2.WalletAction.GetEthereumTransactionReceipt,
196
+ });
197
+ }
198
+ }
199
+ // eslint-disable-next-line class-methods-use-this
200
+ async getPubKey() {
201
+ throw new exceptions_1.WalletException(new Error('You can only fetch PubKey from Cosmos native wallets'));
202
+ }
203
+ async onChainIdChanged(callback) {
204
+ const ethereum = await this.getEthereum();
205
+ this.listeners = {
206
+ [wallet_base_2.WalletEventListener.ChainIdChange]: callback,
207
+ };
208
+ ethereum.on('chainChanged', callback);
209
+ }
210
+ async onAccountChange(callback) {
211
+ const ethereum = await this.getEthereum();
212
+ this.listeners = {
213
+ [wallet_base_2.WalletEventListener.AccountChange]: callback,
214
+ };
215
+ ethereum.on('accountsChanged', callback);
216
+ }
217
+ async getEthereum() {
218
+ const provider = this.wallet === wallet_base_2.Wallet.Metamask
219
+ ? await (0, index_js_1.getMetamaskProvider)()
220
+ : this.wallet === wallet_base_2.Wallet.Phantom
221
+ ? await (0, index_js_1.getPhantomProvider)()
222
+ : this.wallet === wallet_base_2.Wallet.BitGet
223
+ ? await (0, index_js_1.getBitGetProvider)()
224
+ : this.wallet === wallet_base_2.Wallet.OkxWallet
225
+ ? await (0, index_js_1.getOkxWalletProvider)()
226
+ : this.wallet === wallet_base_2.Wallet.TrustWallet
227
+ ? await (0, index_js_1.getTrustWalletProvider)()
228
+ : undefined;
229
+ if (!provider) {
230
+ throw this.EvmWalletException(new Error(`Please install the ${this.wallet} wallet extension.`), {
231
+ code: exceptions_1.UnspecifiedErrorCode,
232
+ type: exceptions_1.ErrorType.WalletNotInstalledError,
233
+ contextModule: wallet_base_2.WalletAction.GetAccounts,
234
+ });
235
+ }
236
+ return provider;
237
+ }
238
+ }
239
+ exports.EvmWallet = EvmWallet;
@@ -0,0 +1,4 @@
1
+ import { BrowserEip1993Provider } from '@injectivelabs/wallet-base';
2
+ export declare function getOkxWalletProvider({ timeout }?: {
3
+ timeout: number;
4
+ }): Promise<BrowserEip1993Provider>;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOkxWalletProvider = getOkxWalletProvider;
4
+ const sdk_ts_1 = require("@injectivelabs/sdk-ts");
5
+ const $window = ((0, sdk_ts_1.isServerSide)()
6
+ ? {}
7
+ : window);
8
+ async function getOkxWalletProvider({ timeout } = { timeout: 3000 }) {
9
+ const provider = getOkxWalletFromWindow();
10
+ if (provider) {
11
+ return provider;
12
+ }
13
+ return listenForOkxWalletInitialized({
14
+ timeout,
15
+ });
16
+ }
17
+ async function listenForOkxWalletInitialized({ timeout } = { timeout: 3000 }) {
18
+ return new Promise((resolve) => {
19
+ const handleInitialization = () => {
20
+ resolve(getOkxWalletFromWindow());
21
+ };
22
+ $window.addEventListener('okxwallet#initialized', handleInitialization, {
23
+ once: true,
24
+ });
25
+ setTimeout(() => {
26
+ $window.removeEventListener('okxwallet#initialized', handleInitialization);
27
+ resolve(null);
28
+ }, timeout);
29
+ });
30
+ }
31
+ function getOkxWalletFromWindow() {
32
+ const injectedProviderExist = typeof window !== 'undefined' &&
33
+ (typeof $window.ethereum !== 'undefined' ||
34
+ typeof $window.okxwallet !== 'undefined');
35
+ // No injected providers exist.
36
+ if (!injectedProviderExist) {
37
+ return;
38
+ }
39
+ if ($window.okxwallet) {
40
+ return $window.okxwallet;
41
+ }
42
+ if ($window.ethereum.isOkxWallet) {
43
+ return $window.ethereum;
44
+ }
45
+ if ($window.providers) {
46
+ return $window.providers.find((p) => p.isOkxWallet);
47
+ }
48
+ return;
49
+ }
@@ -0,0 +1,4 @@
1
+ import { BrowserEip1993Provider } from '@injectivelabs/wallet-base';
2
+ export declare function getBitGetProvider({ timeout }?: {
3
+ timeout: number;
4
+ }): Promise<BrowserEip1993Provider>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBitGetProvider = getBitGetProvider;
4
+ const sdk_ts_1 = require("@injectivelabs/sdk-ts");
5
+ const $window = ((0, sdk_ts_1.isServerSide)()
6
+ ? {}
7
+ : window);
8
+ async function getBitGetProvider({ timeout } = { timeout: 3000 }) {
9
+ const provider = getBitGetFromWindow();
10
+ if (provider) {
11
+ return provider;
12
+ }
13
+ return listenForBitGetInitialized({
14
+ timeout,
15
+ });
16
+ }
17
+ async function listenForBitGetInitialized({ timeout } = { timeout: 3000 }) {
18
+ return new Promise((resolve) => {
19
+ const handleInitialization = () => {
20
+ resolve(getBitGetFromWindow());
21
+ };
22
+ $window.addEventListener('bitkeep#initialized', handleInitialization, {
23
+ once: true,
24
+ });
25
+ setTimeout(() => {
26
+ $window.removeEventListener('bitkeep#initialized', handleInitialization);
27
+ resolve(null);
28
+ }, timeout);
29
+ });
30
+ }
31
+ function getBitGetFromWindow() {
32
+ const injectedProviderExist = typeof window !== 'undefined' &&
33
+ (typeof $window.ethereum !== 'undefined' ||
34
+ typeof $window.bitkeep !== 'undefined');
35
+ // No injected providers exist.
36
+ if (!injectedProviderExist) {
37
+ return;
38
+ }
39
+ if ($window.bitkeep && $window.bitkeep.ethereum) {
40
+ return $window.bitkeep.ethereum;
41
+ }
42
+ return;
43
+ }
@@ -0,0 +1,5 @@
1
+ export { getOkxWalletProvider } from './Okx.js';
2
+ export { getBitGetProvider } from './bitget.js';
3
+ export { getPhantomProvider } from './phantom.js';
4
+ export { getMetamaskProvider } from './metamask.js';
5
+ export { getTrustWalletProvider } from './trustWallet.js';
@@ -0,0 +1,13 @@
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_js_1 = require("./Okx.js");
5
+ Object.defineProperty(exports, "getOkxWalletProvider", { enumerable: true, get: function () { return Okx_js_1.getOkxWalletProvider; } });
6
+ var bitget_js_1 = require("./bitget.js");
7
+ Object.defineProperty(exports, "getBitGetProvider", { enumerable: true, get: function () { return bitget_js_1.getBitGetProvider; } });
8
+ var phantom_js_1 = require("./phantom.js");
9
+ Object.defineProperty(exports, "getPhantomProvider", { enumerable: true, get: function () { return phantom_js_1.getPhantomProvider; } });
10
+ var metamask_js_1 = require("./metamask.js");
11
+ Object.defineProperty(exports, "getMetamaskProvider", { enumerable: true, get: function () { return metamask_js_1.getMetamaskProvider; } });
12
+ var trustWallet_js_1 = require("./trustWallet.js");
13
+ Object.defineProperty(exports, "getTrustWalletProvider", { enumerable: true, get: function () { return trustWallet_js_1.getTrustWalletProvider; } });
@@ -0,0 +1,4 @@
1
+ import { BrowserEip1993Provider } from '@injectivelabs/wallet-base';
2
+ export declare function getMetamaskProvider({ timeout }?: {
3
+ timeout: number;
4
+ }): Promise<BrowserEip1993Provider>;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMetamaskProvider = getMetamaskProvider;
4
+ const sdk_ts_1 = require("@injectivelabs/sdk-ts");
5
+ const $window = ((0, sdk_ts_1.isServerSide)()
6
+ ? {}
7
+ : window);
8
+ async function getMetamaskProvider({ timeout } = { timeout: 3000 }) {
9
+ const provider = getMetamaskFromWindow();
10
+ if (provider) {
11
+ return provider;
12
+ }
13
+ return listenForMetamaskInitialized({
14
+ timeout,
15
+ });
16
+ }
17
+ async function listenForMetamaskInitialized({ timeout } = { timeout: 3000 }) {
18
+ return new Promise((resolve) => {
19
+ const handleInitialization = () => {
20
+ resolve(getMetamaskFromWindow());
21
+ };
22
+ $window.addEventListener('ethereum#initialized', handleInitialization, {
23
+ once: true,
24
+ });
25
+ setTimeout(() => {
26
+ $window.removeEventListener('ethereum#initialized', handleInitialization);
27
+ resolve(null);
28
+ }, timeout);
29
+ });
30
+ }
31
+ function getMetamaskFromWindow() {
32
+ const injectedProviderExist = typeof window !== 'undefined' && typeof $window.ethereum !== 'undefined';
33
+ // No injected providers exist.
34
+ if (!injectedProviderExist) {
35
+ return;
36
+ }
37
+ if ($window.ethereum.isMetaMask) {
38
+ return $window.ethereum;
39
+ }
40
+ if ($window.providers) {
41
+ return $window.providers.find((p) => p.isMetaMask);
42
+ }
43
+ return;
44
+ }
@@ -0,0 +1,4 @@
1
+ import { BrowserEip1993Provider } from '@injectivelabs/wallet-base';
2
+ export declare function getPhantomProvider({ timeout }?: {
3
+ timeout: number;
4
+ }): Promise<BrowserEip1993Provider>;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPhantomProvider = getPhantomProvider;
4
+ const sdk_ts_1 = require("@injectivelabs/sdk-ts");
5
+ const $window = ((0, sdk_ts_1.isServerSide)()
6
+ ? {}
7
+ : window);
8
+ async function getPhantomProvider({ timeout } = { timeout: 3000 }) {
9
+ const provider = getPhantomFromWindow();
10
+ if (provider) {
11
+ return provider;
12
+ }
13
+ return listenForPhantomInitialized({
14
+ timeout,
15
+ });
16
+ }
17
+ async function listenForPhantomInitialized({ timeout } = { timeout: 3000 }) {
18
+ return new Promise((resolve) => {
19
+ const handleInitialization = () => {
20
+ resolve(getPhantomFromWindow());
21
+ };
22
+ $window.addEventListener('phantom#initialized', handleInitialization, {
23
+ once: true,
24
+ });
25
+ setTimeout(() => {
26
+ $window.removeEventListener('phantom#initialized', handleInitialization);
27
+ resolve(null);
28
+ }, timeout);
29
+ });
30
+ }
31
+ function getPhantomFromWindow() {
32
+ const injectedProviderExist = typeof window !== 'undefined' &&
33
+ (typeof $window.ethereum !== 'undefined' ||
34
+ typeof $window.phantom !== 'undefined');
35
+ // No injected providers exist.
36
+ if (!injectedProviderExist) {
37
+ return;
38
+ }
39
+ if ($window.phantom) {
40
+ return $window.phantom.ethereum;
41
+ }
42
+ if ($window.ethereum.isPhantom) {
43
+ return $window.ethereum;
44
+ }
45
+ if ($window.providers) {
46
+ return $window.providers.find((p) => p.isPhantom);
47
+ }
48
+ return;
49
+ }
@@ -0,0 +1,4 @@
1
+ import { BrowserEip1993Provider } from '@injectivelabs/wallet-base';
2
+ export declare function getTrustWalletProvider({ timeout }?: {
3
+ timeout: number;
4
+ }): Promise<BrowserEip1993Provider>;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTrustWalletProvider = getTrustWalletProvider;
4
+ const sdk_ts_1 = require("@injectivelabs/sdk-ts");
5
+ const $window = ((0, sdk_ts_1.isServerSide)()
6
+ ? {}
7
+ : window);
8
+ async function getTrustWalletProvider({ timeout } = { timeout: 3000 }) {
9
+ const provider = getTrustWalletFromWindow();
10
+ if (provider) {
11
+ return provider;
12
+ }
13
+ return listenForTrustWalletInitialized({
14
+ timeout,
15
+ });
16
+ }
17
+ async function listenForTrustWalletInitialized({ timeout } = { timeout: 3000 }) {
18
+ return new Promise((resolve) => {
19
+ const handleInitialization = () => {
20
+ resolve(getTrustWalletFromWindow());
21
+ };
22
+ $window.addEventListener('trustwallet#initialized', handleInitialization, {
23
+ once: true,
24
+ });
25
+ setTimeout(() => {
26
+ $window.removeEventListener('trustwallet#initialized', handleInitialization);
27
+ resolve(null);
28
+ }, timeout);
29
+ });
30
+ }
31
+ function getTrustWalletFromWindow() {
32
+ const injectedProviderExist = typeof window !== 'undefined' &&
33
+ (typeof $window.ethereum !== 'undefined' ||
34
+ typeof $window.trustWallet !== 'undefined');
35
+ // No injected providers exist.
36
+ if (!injectedProviderExist) {
37
+ return;
38
+ }
39
+ if ($window.trustWallet) {
40
+ return $window.trustWallet;
41
+ }
42
+ if ($window.ethereum.isTrustWallet || $window.ethereum.isTrust) {
43
+ return $window.ethereum;
44
+ }
45
+ if ($window.providers) {
46
+ return $window.providers.find((p) => p.isTrustWallet);
47
+ }
48
+ return;
49
+ }
@@ -0,0 +1,4 @@
1
+ import { Wallet, BrowserEip1993Provider } from '@injectivelabs/wallet-base';
2
+ import { EthereumChainId } from '@injectivelabs/ts-types';
3
+ export declare const getEvmProvider: (wallet: Wallet) => Promise<BrowserEip1993Provider>;
4
+ export declare const updateEvmNetwork: (wallet: Wallet, chainId: EthereumChainId) => Promise<unknown>;