@aurum-sdk/core 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/{Aurum-B0Okb4Qv.d.mts → Aurum-BoIhHFKm.d.mts} +25 -2
  2. package/dist/{Aurum-B0Okb4Qv.d.ts → Aurum-BoIhHFKm.d.ts} +25 -2
  3. package/dist/BraveAdapter-ALBZR2RG.js +153 -0
  4. package/dist/BraveAdapter-BPD5PDJH.mjs +153 -0
  5. package/dist/CoinbaseWalletAdapter-BLUJR23D.js +144 -0
  6. package/dist/CoinbaseWalletAdapter-IDB2DFH4.mjs +144 -0
  7. package/dist/EmailAdapter-RUV6JG6Z.mjs +212 -0
  8. package/dist/EmailAdapter-SY65VHGK.js +212 -0
  9. package/dist/MetaMaskAdapter-4V3XM6J2.js +152 -0
  10. package/dist/MetaMaskAdapter-KPNRCMOF.mjs +152 -0
  11. package/dist/PhantomAdapter-7MB32F5M.mjs +151 -0
  12. package/dist/PhantomAdapter-YTN5PUDI.js +151 -0
  13. package/dist/RabbyAdapter-QVNCSWYC.mjs +146 -0
  14. package/dist/RabbyAdapter-SOLYF74M.js +146 -0
  15. package/dist/WalletConnectAdapter-5YL5KFGI.mjs +540 -0
  16. package/dist/WalletConnectAdapter-VMN6R5LO.js +540 -0
  17. package/dist/{chunk-GMFEFDGS.mjs → chunk-222UJ3OP.mjs} +348 -6778
  18. package/dist/chunk-4S5E6KOY.mjs +21 -0
  19. package/dist/{chunk-K64T6WW3.js → chunk-MRORL6L3.js} +420 -6850
  20. package/dist/chunk-PFK6YHOX.mjs +15 -0
  21. package/dist/chunk-QOCN4F47.js +21 -0
  22. package/dist/chunk-RRUPCUSZ.mjs +6558 -0
  23. package/dist/chunk-XUD6VNF7.js +6558 -0
  24. package/dist/chunk-XVRTCAR4.js +15 -0
  25. package/dist/index.d.mts +7 -2
  26. package/dist/index.d.ts +7 -2
  27. package/dist/index.js +304 -1573
  28. package/dist/index.mjs +243 -1512
  29. package/dist/{index.web-Q2L3EMC3.mjs → index.web-NX7JZBIY.mjs} +267 -267
  30. package/dist/{index.web-V7DLWC7H.js → index.web-OPNRZHYZ.js} +267 -267
  31. package/dist/widgets.d.mts +1 -1
  32. package/dist/widgets.d.ts +1 -1
  33. package/dist/widgets.js +14 -12
  34. package/dist/widgets.mjs +3 -1
  35. package/package.json +3 -7
@@ -0,0 +1,212 @@
1
+ import {
2
+ createConfigError
3
+ } from "./chunk-4S5E6KOY.mjs";
4
+ import {
5
+ WalletId,
6
+ WalletName,
7
+ getLogoDataUri,
8
+ sentryLogger
9
+ } from "./chunk-RRUPCUSZ.mjs";
10
+ import {
11
+ init_polyfills
12
+ } from "./chunk-J6XFKNJN.mjs";
13
+
14
+ // src/wallet-adapters/EmailAdapter.ts
15
+ init_polyfills();
16
+ var _EmailAdapter = class _EmailAdapter {
17
+ constructor(config) {
18
+ this.id = WalletId.Email;
19
+ this.name = WalletName.Email;
20
+ this.icon = getLogoDataUri(WalletId.Email, "brand") ?? "";
21
+ this.hide = true;
22
+ this.downloadUrl = null;
23
+ this.wcDeepLinkUrl = null;
24
+ this.provider = null;
25
+ this.initPromise = null;
26
+ this.publicClientCache = /* @__PURE__ */ new Map();
27
+ this.projectId = config?.projectId || "";
28
+ this.telemetry = config?.telemetry ?? false;
29
+ }
30
+ async ensureInitialized() {
31
+ if (this.provider) return;
32
+ if (!this.initPromise) {
33
+ this.initPromise = this.initializeProvider();
34
+ }
35
+ await this.initPromise;
36
+ }
37
+ isInstalled() {
38
+ return true;
39
+ }
40
+ async emailAuthStart(email) {
41
+ if (!this.projectId) {
42
+ throw createConfigError("Email");
43
+ }
44
+ await this.ensureInitialized();
45
+ if (!this.provider) {
46
+ sentryLogger.error("Email is not available");
47
+ throw new Error("Email is not available");
48
+ }
49
+ const { signInWithEmail } = await import("./index.web-NX7JZBIY.mjs");
50
+ const authResult = await signInWithEmail({ email });
51
+ return authResult;
52
+ }
53
+ async emailAuthVerify(flowId, otp) {
54
+ if (!flowId || !otp) {
55
+ throw new Error("flowId and otp are required");
56
+ }
57
+ await this.ensureInitialized();
58
+ if (!this.provider) {
59
+ sentryLogger.error("Email provider not initialized");
60
+ throw new Error("Email provider not initialized");
61
+ }
62
+ const { verifyEmailOTP } = await import("./index.web-NX7JZBIY.mjs");
63
+ return verifyEmailOTP({ flowId, otp });
64
+ }
65
+ async connect() {
66
+ sentryLogger.error("EmailAdapter.connect() is not implemented");
67
+ throw new Error("EmailAdapter.connect() is not implemented");
68
+ }
69
+ async tryRestoreConnection() {
70
+ await this.ensureInitialized();
71
+ if (!this.provider) {
72
+ return null;
73
+ }
74
+ try {
75
+ const accounts = await this.provider.request({
76
+ method: "eth_accounts",
77
+ params: []
78
+ });
79
+ if (!accounts || accounts.length === 0 || !accounts[0]) {
80
+ return null;
81
+ }
82
+ return {
83
+ address: accounts[0],
84
+ provider: this.provider,
85
+ walletId: this.id
86
+ };
87
+ } catch {
88
+ return null;
89
+ }
90
+ }
91
+ async disconnect() {
92
+ try {
93
+ await this.ensureInitialized();
94
+ const { signOut } = await import("./index.web-NX7JZBIY.mjs");
95
+ await signOut();
96
+ } catch {
97
+ }
98
+ }
99
+ getProvider() {
100
+ return this.provider;
101
+ }
102
+ static async initializeChainData() {
103
+ if (this.chainIdMap !== null) return;
104
+ const [allChains, { http }] = await Promise.all([import("viem/chains"), import("viem")]);
105
+ const chains = Object.values(allChains).filter(
106
+ (chain) => typeof chain === "object" && chain !== null && "id" in chain
107
+ );
108
+ this.chainIdMap = new Map(chains.map((chain) => [chain.id, chain]));
109
+ this.viemChains = chains;
110
+ this.viemTransports = chains.reduce(
111
+ (acc, chain) => {
112
+ acc[chain.id] = http();
113
+ return acc;
114
+ },
115
+ {}
116
+ );
117
+ }
118
+ async getPublicClientForChain(chainId) {
119
+ if (this.publicClientCache.has(chainId)) {
120
+ return this.publicClientCache.get(chainId);
121
+ }
122
+ await _EmailAdapter.initializeChainData();
123
+ const viemChain = _EmailAdapter.chainIdMap.get(chainId);
124
+ if (!viemChain) {
125
+ throw new Error(`Chain ${chainId} not supported`);
126
+ }
127
+ const { createPublicClient, http } = await import("viem");
128
+ const publicClient = createPublicClient({
129
+ chain: viemChain,
130
+ transport: http()
131
+ });
132
+ this.publicClientCache.set(chainId, publicClient);
133
+ return publicClient;
134
+ }
135
+ /**
136
+ * Initializes CDP and creates the provider.
137
+ * Called by ensureInitialized() - deduplication handled via initPromise.
138
+ */
139
+ async initializeProvider() {
140
+ const { initialize } = await import("./index.web-NX7JZBIY.mjs");
141
+ await initialize({
142
+ projectId: this.projectId,
143
+ ethereum: {
144
+ createOnLogin: "eoa"
145
+ },
146
+ disableAnalytics: !this.telemetry
147
+ });
148
+ this.provider = await this.createProvider();
149
+ }
150
+ /**
151
+ * Special case:
152
+ * Coinbase default provider does not support generic read methods like eth_getBalance.
153
+ * Wraps the provider to send unsupported methods to a public RPC endpoint.
154
+ */
155
+ async createProvider() {
156
+ try {
157
+ await _EmailAdapter.initializeChainData();
158
+ const { createCDPEmbeddedWallet } = await import("./index.web-NX7JZBIY.mjs");
159
+ const wallet = createCDPEmbeddedWallet({
160
+ chains: _EmailAdapter.viemChains,
161
+ transports: _EmailAdapter.viemTransports
162
+ });
163
+ const base = wallet.provider;
164
+ const getPublicClient = this.getPublicClientForChain.bind(this);
165
+ const wrapped = {
166
+ ...base,
167
+ async request(args) {
168
+ try {
169
+ return await base.request(args);
170
+ } catch (err) {
171
+ const msg = String(err?.message || "");
172
+ const isUnsupported = msg.includes("not supported") || msg.includes("Unsupported") || err?.code === -32601;
173
+ if (isUnsupported) {
174
+ let chainId;
175
+ try {
176
+ const chainIdHex = await base.request({ method: "eth_chainId", params: [] });
177
+ chainId = parseInt(chainIdHex, 16);
178
+ } catch {
179
+ sentryLogger.error("Failed to get chainId for fallback request");
180
+ throw new Error("Failed to get chainId for fallback request");
181
+ }
182
+ const publicClient = await getPublicClient(chainId);
183
+ return await publicClient.transport.request({
184
+ method: args.method,
185
+ params: Array.isArray(args.params) ? args.params : args.params ? [args.params] : void 0
186
+ });
187
+ }
188
+ throw err;
189
+ }
190
+ }
191
+ };
192
+ return wrapped;
193
+ } catch (error) {
194
+ sentryLogger.error("Failed to initialize Email provider", { error });
195
+ return null;
196
+ }
197
+ }
198
+ // Email wallets don't support account switching - user must re-authenticate to change accounts
199
+ onAccountsChanged() {
200
+ }
201
+ removeListeners() {
202
+ }
203
+ };
204
+ // Static variables - computed once across all instances
205
+ _EmailAdapter.chainIdMap = null;
206
+ _EmailAdapter.viemChains = null;
207
+ _EmailAdapter.viemTransports = null;
208
+ var EmailAdapter = _EmailAdapter;
209
+ export {
210
+ EmailAdapter
211
+ };
212
+ //# sourceMappingURL=EmailAdapter-RUV6JG6Z.mjs.map
@@ -0,0 +1,212 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkQOCN4F47js = require('./chunk-QOCN4F47.js');
4
+
5
+
6
+
7
+
8
+
9
+ var _chunkXUD6VNF7js = require('./chunk-XUD6VNF7.js');
10
+
11
+
12
+ var _chunkQIPVNM7Tjs = require('./chunk-QIPVNM7T.js');
13
+
14
+ // src/wallet-adapters/EmailAdapter.ts
15
+ _chunkQIPVNM7Tjs.init_polyfills.call(void 0, );
16
+ var _EmailAdapter = class _EmailAdapter {
17
+ constructor(config) {
18
+ this.id = _chunkXUD6VNF7js.WalletId.Email;
19
+ this.name = _chunkXUD6VNF7js.WalletName.Email;
20
+ this.icon = _nullishCoalesce(_chunkXUD6VNF7js.getLogoDataUri.call(void 0, _chunkXUD6VNF7js.WalletId.Email, "brand"), () => ( ""));
21
+ this.hide = true;
22
+ this.downloadUrl = null;
23
+ this.wcDeepLinkUrl = null;
24
+ this.provider = null;
25
+ this.initPromise = null;
26
+ this.publicClientCache = /* @__PURE__ */ new Map();
27
+ this.projectId = _optionalChain([config, 'optionalAccess', _ => _.projectId]) || "";
28
+ this.telemetry = _nullishCoalesce(_optionalChain([config, 'optionalAccess', _2 => _2.telemetry]), () => ( false));
29
+ }
30
+ async ensureInitialized() {
31
+ if (this.provider) return;
32
+ if (!this.initPromise) {
33
+ this.initPromise = this.initializeProvider();
34
+ }
35
+ await this.initPromise;
36
+ }
37
+ isInstalled() {
38
+ return true;
39
+ }
40
+ async emailAuthStart(email) {
41
+ if (!this.projectId) {
42
+ throw _chunkQOCN4F47js.createConfigError.call(void 0, "Email");
43
+ }
44
+ await this.ensureInitialized();
45
+ if (!this.provider) {
46
+ _chunkXUD6VNF7js.sentryLogger.error("Email is not available");
47
+ throw new Error("Email is not available");
48
+ }
49
+ const { signInWithEmail } = await Promise.resolve().then(() => _interopRequireWildcard(require("./index.web-OPNRZHYZ.js")));
50
+ const authResult = await signInWithEmail({ email });
51
+ return authResult;
52
+ }
53
+ async emailAuthVerify(flowId, otp) {
54
+ if (!flowId || !otp) {
55
+ throw new Error("flowId and otp are required");
56
+ }
57
+ await this.ensureInitialized();
58
+ if (!this.provider) {
59
+ _chunkXUD6VNF7js.sentryLogger.error("Email provider not initialized");
60
+ throw new Error("Email provider not initialized");
61
+ }
62
+ const { verifyEmailOTP } = await Promise.resolve().then(() => _interopRequireWildcard(require("./index.web-OPNRZHYZ.js")));
63
+ return verifyEmailOTP({ flowId, otp });
64
+ }
65
+ async connect() {
66
+ _chunkXUD6VNF7js.sentryLogger.error("EmailAdapter.connect() is not implemented");
67
+ throw new Error("EmailAdapter.connect() is not implemented");
68
+ }
69
+ async tryRestoreConnection() {
70
+ await this.ensureInitialized();
71
+ if (!this.provider) {
72
+ return null;
73
+ }
74
+ try {
75
+ const accounts = await this.provider.request({
76
+ method: "eth_accounts",
77
+ params: []
78
+ });
79
+ if (!accounts || accounts.length === 0 || !accounts[0]) {
80
+ return null;
81
+ }
82
+ return {
83
+ address: accounts[0],
84
+ provider: this.provider,
85
+ walletId: this.id
86
+ };
87
+ } catch (e) {
88
+ return null;
89
+ }
90
+ }
91
+ async disconnect() {
92
+ try {
93
+ await this.ensureInitialized();
94
+ const { signOut } = await Promise.resolve().then(() => _interopRequireWildcard(require("./index.web-OPNRZHYZ.js")));
95
+ await signOut();
96
+ } catch (e2) {
97
+ }
98
+ }
99
+ getProvider() {
100
+ return this.provider;
101
+ }
102
+ static async initializeChainData() {
103
+ if (this.chainIdMap !== null) return;
104
+ const [allChains, { http }] = await Promise.all([Promise.resolve().then(() => _interopRequireWildcard(require("viem/chains"))), Promise.resolve().then(() => _interopRequireWildcard(require("viem")))]);
105
+ const chains = Object.values(allChains).filter(
106
+ (chain) => typeof chain === "object" && chain !== null && "id" in chain
107
+ );
108
+ this.chainIdMap = new Map(chains.map((chain) => [chain.id, chain]));
109
+ this.viemChains = chains;
110
+ this.viemTransports = chains.reduce(
111
+ (acc, chain) => {
112
+ acc[chain.id] = http();
113
+ return acc;
114
+ },
115
+ {}
116
+ );
117
+ }
118
+ async getPublicClientForChain(chainId) {
119
+ if (this.publicClientCache.has(chainId)) {
120
+ return this.publicClientCache.get(chainId);
121
+ }
122
+ await _EmailAdapter.initializeChainData();
123
+ const viemChain = _EmailAdapter.chainIdMap.get(chainId);
124
+ if (!viemChain) {
125
+ throw new Error(`Chain ${chainId} not supported`);
126
+ }
127
+ const { createPublicClient, http } = await Promise.resolve().then(() => _interopRequireWildcard(require("viem")));
128
+ const publicClient = createPublicClient({
129
+ chain: viemChain,
130
+ transport: http()
131
+ });
132
+ this.publicClientCache.set(chainId, publicClient);
133
+ return publicClient;
134
+ }
135
+ /**
136
+ * Initializes CDP and creates the provider.
137
+ * Called by ensureInitialized() - deduplication handled via initPromise.
138
+ */
139
+ async initializeProvider() {
140
+ const { initialize } = await Promise.resolve().then(() => _interopRequireWildcard(require("./index.web-OPNRZHYZ.js")));
141
+ await initialize({
142
+ projectId: this.projectId,
143
+ ethereum: {
144
+ createOnLogin: "eoa"
145
+ },
146
+ disableAnalytics: !this.telemetry
147
+ });
148
+ this.provider = await this.createProvider();
149
+ }
150
+ /**
151
+ * Special case:
152
+ * Coinbase default provider does not support generic read methods like eth_getBalance.
153
+ * Wraps the provider to send unsupported methods to a public RPC endpoint.
154
+ */
155
+ async createProvider() {
156
+ try {
157
+ await _EmailAdapter.initializeChainData();
158
+ const { createCDPEmbeddedWallet } = await Promise.resolve().then(() => _interopRequireWildcard(require("./index.web-OPNRZHYZ.js")));
159
+ const wallet = createCDPEmbeddedWallet({
160
+ chains: _EmailAdapter.viemChains,
161
+ transports: _EmailAdapter.viemTransports
162
+ });
163
+ const base = wallet.provider;
164
+ const getPublicClient = this.getPublicClientForChain.bind(this);
165
+ const wrapped = {
166
+ ...base,
167
+ async request(args) {
168
+ try {
169
+ return await base.request(args);
170
+ } catch (err) {
171
+ const msg = String(_optionalChain([err, 'optionalAccess', _3 => _3.message]) || "");
172
+ const isUnsupported = msg.includes("not supported") || msg.includes("Unsupported") || _optionalChain([err, 'optionalAccess', _4 => _4.code]) === -32601;
173
+ if (isUnsupported) {
174
+ let chainId;
175
+ try {
176
+ const chainIdHex = await base.request({ method: "eth_chainId", params: [] });
177
+ chainId = parseInt(chainIdHex, 16);
178
+ } catch (e3) {
179
+ _chunkXUD6VNF7js.sentryLogger.error("Failed to get chainId for fallback request");
180
+ throw new Error("Failed to get chainId for fallback request");
181
+ }
182
+ const publicClient = await getPublicClient(chainId);
183
+ return await publicClient.transport.request({
184
+ method: args.method,
185
+ params: Array.isArray(args.params) ? args.params : args.params ? [args.params] : void 0
186
+ });
187
+ }
188
+ throw err;
189
+ }
190
+ }
191
+ };
192
+ return wrapped;
193
+ } catch (error) {
194
+ _chunkXUD6VNF7js.sentryLogger.error("Failed to initialize Email provider", { error });
195
+ return null;
196
+ }
197
+ }
198
+ // Email wallets don't support account switching - user must re-authenticate to change accounts
199
+ onAccountsChanged() {
200
+ }
201
+ removeListeners() {
202
+ }
203
+ };
204
+ // Static variables - computed once across all instances
205
+ _EmailAdapter.chainIdMap = null;
206
+ _EmailAdapter.viemChains = null;
207
+ _EmailAdapter.viemTransports = null;
208
+ var EmailAdapter = _EmailAdapter;
209
+
210
+
211
+ exports.EmailAdapter = EmailAdapter;
212
+ //# sourceMappingURL=EmailAdapter-SY65VHGK.js.map
@@ -0,0 +1,152 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+
4
+
5
+
6
+ var _chunkXUD6VNF7js = require('./chunk-XUD6VNF7.js');
7
+
8
+
9
+ var _chunkQIPVNM7Tjs = require('./chunk-QIPVNM7T.js');
10
+
11
+ // src/wallet-adapters/MetaMaskAdapter.ts
12
+ _chunkQIPVNM7Tjs.init_polyfills.call(void 0, );
13
+ var METAMASK_RDNS = "io.metamask";
14
+ var MetaMaskAdapter = class {
15
+ constructor() {
16
+ this.id = _chunkXUD6VNF7js.WalletId.MetaMask;
17
+ this.name = _chunkXUD6VNF7js.WalletName.MetaMask;
18
+ this.icon = _nullishCoalesce(_chunkXUD6VNF7js.getLogoDataUri.call(void 0, _chunkXUD6VNF7js.WalletId.MetaMask, "brand"), () => ( ""));
19
+ this.hide = false;
20
+ this.downloadUrl = "https://metamask.io/download";
21
+ this.wcDeepLinkUrl = "metamask://wc?uri=";
22
+ this.provider = null;
23
+ this.accountsChangedCallback = null;
24
+ this.providerPromise = null;
25
+ this.providerPromise = this.discoverProvider();
26
+ }
27
+ /**
28
+ * Uses EIP-6963 to discover the MetaMask provider by its RDNS identifier.
29
+ * Falls back to window.ethereum for in-app browser support (MetaMask Mobile).
30
+ * This prevents other wallets (like Rabby) from hijacking the connection.
31
+ */
32
+ discoverProvider() {
33
+ if (typeof window === "undefined") return Promise.resolve(null);
34
+ return new Promise((resolve) => {
35
+ let resolved = false;
36
+ const onAnnouncement = (event) => {
37
+ const { detail } = event;
38
+ if (detail.info.rdns === METAMASK_RDNS) {
39
+ resolved = true;
40
+ this.provider = detail.provider;
41
+ window.removeEventListener("eip6963:announceProvider", onAnnouncement);
42
+ resolve(detail.provider);
43
+ }
44
+ };
45
+ window.addEventListener("eip6963:announceProvider", onAnnouncement);
46
+ window.dispatchEvent(new Event("eip6963:requestProvider"));
47
+ setTimeout(() => {
48
+ if (!resolved) {
49
+ window.removeEventListener("eip6963:announceProvider", onAnnouncement);
50
+ const legacyProvider = this.detectLegacyProvider();
51
+ if (legacyProvider) {
52
+ this.provider = legacyProvider;
53
+ }
54
+ resolve(legacyProvider);
55
+ }
56
+ }, 100);
57
+ });
58
+ }
59
+ /**
60
+ * Fallback detection for in-app browsers (MetaMask Mobile) that don't support EIP-6963.
61
+ * Checks window.ethereum for MetaMask-specific flags.
62
+ */
63
+ detectLegacyProvider() {
64
+ const ethereum = window.ethereum;
65
+ if (!ethereum) return null;
66
+ if (_optionalChain([ethereum, 'access', _ => _.providers, 'optionalAccess', _2 => _2.length])) {
67
+ const metaMaskProvider = ethereum.providers.find((p) => p.isMetaMask && !p.isBraveWallet);
68
+ if (metaMaskProvider) return metaMaskProvider;
69
+ }
70
+ if (ethereum.isMetaMask && !ethereum.isBraveWallet) {
71
+ return ethereum;
72
+ }
73
+ return null;
74
+ }
75
+ isInstalled() {
76
+ return Boolean(_nullishCoalesce(this.provider, () => ( this.detectLegacyProvider())));
77
+ }
78
+ async connect() {
79
+ if (!this.provider && this.providerPromise) {
80
+ await this.providerPromise;
81
+ }
82
+ if (!this.provider) {
83
+ _chunkXUD6VNF7js.sentryLogger.error("MetaMask is not available");
84
+ throw new Error("MetaMask is not available");
85
+ }
86
+ await this.provider.request({
87
+ method: "wallet_requestPermissions",
88
+ params: [{ eth_accounts: {} }]
89
+ });
90
+ const accounts = await this.provider.request({
91
+ method: "eth_requestAccounts",
92
+ params: []
93
+ });
94
+ if (!accounts || accounts.length === 0 || !accounts[0]) {
95
+ _chunkXUD6VNF7js.sentryLogger.error("No accounts returned from MetaMask");
96
+ throw new Error("No accounts returned from MetaMask");
97
+ }
98
+ return {
99
+ address: accounts[0],
100
+ provider: this.provider,
101
+ walletId: this.id
102
+ };
103
+ }
104
+ async tryRestoreConnection() {
105
+ if (!this.provider && this.providerPromise) {
106
+ await this.providerPromise;
107
+ }
108
+ if (!this.provider) {
109
+ return null;
110
+ }
111
+ try {
112
+ const accounts = await this.provider.request({
113
+ method: "eth_accounts",
114
+ params: []
115
+ });
116
+ if (!accounts || accounts.length === 0 || !accounts[0]) {
117
+ return null;
118
+ }
119
+ return {
120
+ address: accounts[0],
121
+ provider: this.provider,
122
+ walletId: this.id
123
+ };
124
+ } catch (e) {
125
+ return null;
126
+ }
127
+ }
128
+ async disconnect() {
129
+ }
130
+ getProvider() {
131
+ return this.provider;
132
+ }
133
+ // Called by Aurum when user connects wallet
134
+ // Passes Aurum.ts --> syncStateFromAccountsChanged() to handle the provider accounts changed event
135
+ onAccountsChanged(callback) {
136
+ if (!_optionalChain([this, 'access', _3 => _3.provider, 'optionalAccess', _4 => _4.on])) return;
137
+ if (this.accountsChangedCallback) {
138
+ _optionalChain([this, 'access', _5 => _5.provider, 'access', _6 => _6.removeListener, 'optionalCall', _7 => _7("accountsChanged", this.accountsChangedCallback)]);
139
+ }
140
+ this.accountsChangedCallback = callback;
141
+ this.provider.on("accountsChanged", this.accountsChangedCallback);
142
+ }
143
+ removeListeners() {
144
+ if (!_optionalChain([this, 'access', _8 => _8.provider, 'optionalAccess', _9 => _9.removeListener]) || !this.accountsChangedCallback) return;
145
+ this.provider.removeListener("accountsChanged", this.accountsChangedCallback);
146
+ this.accountsChangedCallback = null;
147
+ }
148
+ };
149
+
150
+
151
+ exports.MetaMaskAdapter = MetaMaskAdapter;
152
+ //# sourceMappingURL=MetaMaskAdapter-4V3XM6J2.js.map