@dynamic-labs/starknet 3.0.0-alpha.6 → 3.0.0-alpha.60
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/CHANGELOG.md +585 -0
- package/package.json +7 -6
- package/src/index.cjs +5 -1
- package/src/index.d.ts +2 -1
- package/src/index.js +3 -1
- package/src/starknetWalletConnector.cjs +11 -9
- package/src/starknetWalletConnector.d.ts +18 -5
- package/src/starknetWalletConnector.js +11 -9
- package/src/utils/starknetSnap.cjs +28 -17
- package/src/utils/starknetSnap.js +28 -17
- package/src/wallet/StarknetWallet.cjs +43 -0
- package/src/wallet/StarknetWallet.d.ts +7 -0
- package/src/wallet/StarknetWallet.js +39 -0
- package/src/wallet/index.d.ts +2 -0
- package/src/wallet/isStarknetWallet/index.d.ts +1 -0
- package/src/wallet/isStarknetWallet/isStarknetWallet.cjs +8 -0
- package/src/wallet/isStarknetWallet/isStarknetWallet.d.ts +3 -0
- package/src/wallet/isStarknetWallet/isStarknetWallet.js +4 -0
- package/src/wallets/argentx.d.ts +2 -2
- package/src/wallets/argentxBase.d.ts +2 -2
- package/src/wallets/bitget.d.ts +2 -2
- package/src/wallets/braavos.d.ts +2 -2
- package/src/wallets/metamask.cjs +92 -20
- package/src/wallets/metamask.d.ts +9 -3
- package/src/wallets/metamask.js +93 -21
- package/src/wallets/okx.d.ts +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/starknet",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.60",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
|
|
@@ -30,12 +30,13 @@
|
|
|
30
30
|
"get-starknet-core": "3.2.0",
|
|
31
31
|
"text-encoding": "0.7.0",
|
|
32
32
|
"starknetkit": "1.1.3",
|
|
33
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
33
|
+
"@dynamic-labs/sdk-api-core": "0.0.526",
|
|
34
34
|
"@module-federation/runtime": "0.1.18",
|
|
35
|
-
"@dynamic-labs/
|
|
36
|
-
"@dynamic-labs/
|
|
37
|
-
"@dynamic-labs/
|
|
38
|
-
"@dynamic-labs/wallet-
|
|
35
|
+
"@dynamic-labs/logger": "3.0.0-alpha.60",
|
|
36
|
+
"@dynamic-labs/starknet-core": "3.0.0-alpha.60",
|
|
37
|
+
"@dynamic-labs/utils": "3.0.0-alpha.60",
|
|
38
|
+
"@dynamic-labs/wallet-book": "3.0.0-alpha.60",
|
|
39
|
+
"@dynamic-labs/wallet-connector-core": "3.0.0-alpha.60"
|
|
39
40
|
},
|
|
40
41
|
"peerDependencies": {}
|
|
41
42
|
}
|
package/src/index.cjs
CHANGED
|
@@ -10,7 +10,9 @@ var argentxWeb = require('./wallets/argentxWeb.cjs');
|
|
|
10
10
|
var bitget = require('./wallets/bitget.cjs');
|
|
11
11
|
var okx = require('./wallets/okx.cjs');
|
|
12
12
|
var metamask = require('./wallets/metamask.cjs');
|
|
13
|
-
require('@dynamic-labs/
|
|
13
|
+
require('@dynamic-labs/starknet-core');
|
|
14
|
+
var StarknetWallet = require('./wallet/StarknetWallet.cjs');
|
|
15
|
+
var isStarknetWallet = require('./wallet/isStarknetWallet/isStarknetWallet.cjs');
|
|
14
16
|
|
|
15
17
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
16
18
|
const StarknetWalletConnectors = (props) => [
|
|
@@ -23,4 +25,6 @@ const StarknetWalletConnectors = (props) => [
|
|
|
23
25
|
metamask.MetaMask,
|
|
24
26
|
];
|
|
25
27
|
|
|
28
|
+
exports.StarknetWallet = StarknetWallet.StarknetWallet;
|
|
29
|
+
exports.isStarknetWallet = isStarknetWallet.isStarknetWallet;
|
|
26
30
|
exports.StarknetWalletConnectors = StarknetWalletConnectors;
|
package/src/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ArgentX } from './wallets/argentx';
|
|
2
|
-
import '@dynamic-labs/
|
|
2
|
+
import '@dynamic-labs/starknet-core';
|
|
3
3
|
export declare const StarknetWalletConnectors: (props: any) => (typeof ArgentX)[];
|
|
4
4
|
export type { StarknetWalletConnectorType } from './starknetWalletConnector';
|
|
5
5
|
export type { ArgentXWalletConnectorType } from './wallets/argentx';
|
|
6
6
|
export type { BraavosWalletConnectorType } from './wallets/braavos';
|
|
7
7
|
export type { ArgentXMobileWalletConnectorType } from './wallets/argentxMobile';
|
|
8
8
|
export type { ArgentXWebWalletConnectorType } from './wallets/argentxWeb';
|
|
9
|
+
export { StarknetWallet, isStarknetWallet } from './wallet';
|
package/src/index.js
CHANGED
|
@@ -6,7 +6,9 @@ import { ArgentXWeb } from './wallets/argentxWeb.js';
|
|
|
6
6
|
import { Bitget } from './wallets/bitget.js';
|
|
7
7
|
import { Okx } from './wallets/okx.js';
|
|
8
8
|
import { MetaMask } from './wallets/metamask.js';
|
|
9
|
-
import '@dynamic-labs/
|
|
9
|
+
import '@dynamic-labs/starknet-core';
|
|
10
|
+
export { StarknetWallet } from './wallet/StarknetWallet.js';
|
|
11
|
+
export { isStarknetWallet } from './wallet/isStarknetWallet/isStarknetWallet.js';
|
|
10
12
|
|
|
11
13
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
12
14
|
const StarknetWalletConnectors = (props) => [
|
|
@@ -11,6 +11,7 @@ var utils = require('@dynamic-labs/utils');
|
|
|
11
11
|
var constants = require('./constants.cjs');
|
|
12
12
|
var ethereumContractAbi = require('./ethereumContractAbi.cjs');
|
|
13
13
|
var convertors = require('./utils/convertors.cjs');
|
|
14
|
+
var StarknetWallet = require('./wallet/StarknetWallet.cjs');
|
|
14
15
|
|
|
15
16
|
const ACCOUNT_CHANGED_EVENT_LISTENER = 'accountsChanged';
|
|
16
17
|
const NETWORK_CHANGED_EVENT_LISTENER = 'networkChanged';
|
|
@@ -19,6 +20,7 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
19
20
|
var _a;
|
|
20
21
|
super(opts);
|
|
21
22
|
this.STARKNET_VERSION = 'v5';
|
|
23
|
+
this.ChainWallet = StarknetWallet.StarknetWallet;
|
|
22
24
|
this.connectedChain = 'STARK';
|
|
23
25
|
this.supportedChains = ['STARK'];
|
|
24
26
|
this.switchNetworkOnlyFromWallet = true;
|
|
@@ -93,7 +95,8 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
93
95
|
if (!this.isInstalledOnBrowser() &&
|
|
94
96
|
utils.isMobile() &&
|
|
95
97
|
this.walletBookWallet.mobile &&
|
|
96
|
-
this.walletBookWallet.mobile.inAppBrowser
|
|
98
|
+
this.walletBookWallet.mobile.inAppBrowser &&
|
|
99
|
+
this.mobileExperience === 'in-app-browser') {
|
|
97
100
|
const inAppBrowserCompiledTemplate = utils.template(this.walletBookWallet.mobile.inAppBrowser);
|
|
98
101
|
const deepLink = inAppBrowserCompiledTemplate({
|
|
99
102
|
encodedDappURI: encodeURIComponent(window.location.toString()),
|
|
@@ -107,13 +110,13 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
107
110
|
return Promise.resolve(wallet === null || wallet === void 0 ? void 0 : wallet.selectedAddress);
|
|
108
111
|
});
|
|
109
112
|
}
|
|
110
|
-
|
|
113
|
+
getWalletAccount() {
|
|
111
114
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
112
115
|
const wallet = this.getWallet();
|
|
113
116
|
return wallet === null || wallet === void 0 ? void 0 : wallet.account;
|
|
114
117
|
});
|
|
115
118
|
}
|
|
116
|
-
|
|
119
|
+
getProvider() {
|
|
117
120
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
118
121
|
const wallet = yield this.getWallet();
|
|
119
122
|
return wallet === null || wallet === void 0 ? void 0 : wallet.provider;
|
|
@@ -133,17 +136,16 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
133
136
|
return signature === null || signature === void 0 ? void 0 : signature.join(',');
|
|
134
137
|
});
|
|
135
138
|
}
|
|
136
|
-
getBalance() {
|
|
139
|
+
getBalance(address) {
|
|
137
140
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
walletConnectorCore.logger.error('Could not fetch wallet address for getting balance');
|
|
141
|
+
const provider = yield this.getProvider();
|
|
142
|
+
if (!provider) {
|
|
143
|
+
walletConnectorCore.logger.error('Could not find provider for getting balance');
|
|
142
144
|
return undefined;
|
|
143
145
|
}
|
|
144
146
|
const contract = new starknet.Contract(ethereumContractAbi, constants.ETH_STARKNET_ADDRESS, provider);
|
|
145
147
|
try {
|
|
146
|
-
const { balance } = yield contract.balanceOf(
|
|
148
|
+
const { balance } = yield contract.balanceOf(address);
|
|
147
149
|
/**
|
|
148
150
|
* Dividing by 1e18 as the returned balance is a Gwei number.
|
|
149
151
|
* Read more here: https://www.investopedia.com/terms/g/gwei-ethereum.asp#toc-what-is-gwei
|
|
@@ -3,8 +3,9 @@ import { ProviderInterface, constants, AccountInterface, RpcProvider } from 'sta
|
|
|
3
3
|
import { Chain, WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
4
4
|
import { NetworkConfiguration } from '@dynamic-labs/sdk-api-core';
|
|
5
5
|
import { WalletBookSchema } from '@dynamic-labs/wallet-book';
|
|
6
|
-
import { IChainRpcProviders } from '@dynamic-labs/
|
|
6
|
+
import { IChainRpcProviders } from '@dynamic-labs/starknet-core';
|
|
7
7
|
import { StarknetWalletKey } from './types';
|
|
8
|
+
import { StarknetWallet } from './wallet';
|
|
8
9
|
type AccountChangeEventHandler = (address: {
|
|
9
10
|
toString(): string;
|
|
10
11
|
}) => Promise<void>;
|
|
@@ -13,10 +14,11 @@ type NetworkChangeEventHandler = (network: {
|
|
|
13
14
|
}) => Promise<void>;
|
|
14
15
|
export declare const ACCOUNT_CHANGED_EVENT_LISTENER = "accountsChanged";
|
|
15
16
|
export declare const NETWORK_CHANGED_EVENT_LISTENER = "networkChanged";
|
|
16
|
-
declare abstract class StarknetWalletConnector extends WalletConnectorBase {
|
|
17
|
+
declare abstract class StarknetWalletConnector extends WalletConnectorBase<typeof StarknetWallet> {
|
|
17
18
|
STARKNET_VERSION: 'v5' | 'v4';
|
|
18
19
|
name: string;
|
|
19
20
|
windowKey: StarknetWalletKey;
|
|
21
|
+
ChainWallet: typeof StarknetWallet;
|
|
20
22
|
connectedChain: Chain;
|
|
21
23
|
supportedChains: Chain[];
|
|
22
24
|
handleAccountChange: AccountChangeEventHandler | undefined;
|
|
@@ -79,6 +81,7 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
79
81
|
native?: string | undefined;
|
|
80
82
|
universal?: string | undefined;
|
|
81
83
|
} | undefined;
|
|
84
|
+
mobileExperience?: "in-app-browser" | "redirect" | undefined;
|
|
82
85
|
shortName?: string | undefined;
|
|
83
86
|
showOnlyIfInstalled?: boolean | undefined;
|
|
84
87
|
switchNetworkOnlyFromWallet?: boolean | undefined;
|
|
@@ -86,6 +89,16 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
86
89
|
sdks?: string[] | undefined;
|
|
87
90
|
} | undefined;
|
|
88
91
|
walletGroup?: string | undefined;
|
|
92
|
+
walletLimitations?: {
|
|
93
|
+
browserExtension?: {
|
|
94
|
+
unsupportedEvents?: string[] | undefined;
|
|
95
|
+
unsupportedMethods?: string[] | undefined;
|
|
96
|
+
} | undefined;
|
|
97
|
+
mobile?: {
|
|
98
|
+
unsupportedEvents?: string[] | undefined;
|
|
99
|
+
unsupportedMethods?: string[] | undefined;
|
|
100
|
+
} | undefined;
|
|
101
|
+
} | undefined;
|
|
89
102
|
};
|
|
90
103
|
isProviderConnected(): boolean;
|
|
91
104
|
getPublicClient(): Promise<RpcProvider | undefined>;
|
|
@@ -95,10 +108,10 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
95
108
|
getNetwork(): Promise<any>;
|
|
96
109
|
connect(): Promise<void>;
|
|
97
110
|
getAddress(): Promise<string | undefined>;
|
|
98
|
-
|
|
99
|
-
|
|
111
|
+
getWalletAccount(): Promise<AccountInterface | undefined>;
|
|
112
|
+
getProvider(): Promise<ProviderInterface | undefined>;
|
|
100
113
|
signMessage(messageToSign: string): Promise<string | undefined>;
|
|
101
|
-
getBalance(): Promise<string | undefined>;
|
|
114
|
+
getBalance(address: string): Promise<string | undefined>;
|
|
102
115
|
endSession(): Promise<void>;
|
|
103
116
|
getWallet(): StarknetWindowObject | undefined;
|
|
104
117
|
isInstalledOnBrowser(): boolean;
|
|
@@ -7,6 +7,7 @@ import { isMobile, template, DynamicError, retryableFn } from '@dynamic-labs/uti
|
|
|
7
7
|
import { ETH_STARKNET_ADDRESS } from './constants.js';
|
|
8
8
|
import ETH_CONTRACT_ABI from './ethereumContractAbi.js';
|
|
9
9
|
import { formatTypedDataMessage } from './utils/convertors.js';
|
|
10
|
+
import { StarknetWallet } from './wallet/StarknetWallet.js';
|
|
10
11
|
|
|
11
12
|
const ACCOUNT_CHANGED_EVENT_LISTENER = 'accountsChanged';
|
|
12
13
|
const NETWORK_CHANGED_EVENT_LISTENER = 'networkChanged';
|
|
@@ -15,6 +16,7 @@ class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
15
16
|
var _a;
|
|
16
17
|
super(opts);
|
|
17
18
|
this.STARKNET_VERSION = 'v5';
|
|
19
|
+
this.ChainWallet = StarknetWallet;
|
|
18
20
|
this.connectedChain = 'STARK';
|
|
19
21
|
this.supportedChains = ['STARK'];
|
|
20
22
|
this.switchNetworkOnlyFromWallet = true;
|
|
@@ -89,7 +91,8 @@ class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
89
91
|
if (!this.isInstalledOnBrowser() &&
|
|
90
92
|
isMobile() &&
|
|
91
93
|
this.walletBookWallet.mobile &&
|
|
92
|
-
this.walletBookWallet.mobile.inAppBrowser
|
|
94
|
+
this.walletBookWallet.mobile.inAppBrowser &&
|
|
95
|
+
this.mobileExperience === 'in-app-browser') {
|
|
93
96
|
const inAppBrowserCompiledTemplate = template(this.walletBookWallet.mobile.inAppBrowser);
|
|
94
97
|
const deepLink = inAppBrowserCompiledTemplate({
|
|
95
98
|
encodedDappURI: encodeURIComponent(window.location.toString()),
|
|
@@ -103,13 +106,13 @@ class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
103
106
|
return Promise.resolve(wallet === null || wallet === void 0 ? void 0 : wallet.selectedAddress);
|
|
104
107
|
});
|
|
105
108
|
}
|
|
106
|
-
|
|
109
|
+
getWalletAccount() {
|
|
107
110
|
return __awaiter(this, void 0, void 0, function* () {
|
|
108
111
|
const wallet = this.getWallet();
|
|
109
112
|
return wallet === null || wallet === void 0 ? void 0 : wallet.account;
|
|
110
113
|
});
|
|
111
114
|
}
|
|
112
|
-
|
|
115
|
+
getProvider() {
|
|
113
116
|
return __awaiter(this, void 0, void 0, function* () {
|
|
114
117
|
const wallet = yield this.getWallet();
|
|
115
118
|
return wallet === null || wallet === void 0 ? void 0 : wallet.provider;
|
|
@@ -129,17 +132,16 @@ class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
129
132
|
return signature === null || signature === void 0 ? void 0 : signature.join(',');
|
|
130
133
|
});
|
|
131
134
|
}
|
|
132
|
-
getBalance() {
|
|
135
|
+
getBalance(address) {
|
|
133
136
|
return __awaiter(this, void 0, void 0, function* () {
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
logger.error('Could not fetch wallet address for getting balance');
|
|
137
|
+
const provider = yield this.getProvider();
|
|
138
|
+
if (!provider) {
|
|
139
|
+
logger.error('Could not find provider for getting balance');
|
|
138
140
|
return undefined;
|
|
139
141
|
}
|
|
140
142
|
const contract = new Contract(ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS, provider);
|
|
141
143
|
try {
|
|
142
|
-
const { balance } = yield contract.balanceOf(
|
|
144
|
+
const { balance } = yield contract.balanceOf(address);
|
|
143
145
|
/**
|
|
144
146
|
* Dividing by 1e18 as the returned balance is a Gwei number.
|
|
145
147
|
* Read more here: https://www.investopedia.com/terms/g/gwei-ethereum.asp#toc-what-is-gwei
|
|
@@ -6,13 +6,34 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
6
6
|
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
7
7
|
var index_cjs_js = require('@module-federation/runtime/dist/index.cjs.js');
|
|
8
8
|
|
|
9
|
-
let metaMaskSnapWallet;
|
|
10
9
|
/**
|
|
11
10
|
*
|
|
12
11
|
* @param {IEthereum} provider the metamask window provider object
|
|
13
12
|
* @returns {StarknetWindowObject} the metamask provider wrapper formed into starknet window object
|
|
14
13
|
*/
|
|
15
14
|
const createMetaMaskProviderWrapper = (provider) => {
|
|
15
|
+
let metaMaskSnapWallet;
|
|
16
|
+
// using @module-federation to load the get-starknet remoteEntry, as recommended
|
|
17
|
+
// by the starknet team. this file is a small wrapper around the metamask snap api
|
|
18
|
+
// to communicate with starknet, which we then wrap into a starknet window object
|
|
19
|
+
// and use in our starknet connector, just like braavos and argent
|
|
20
|
+
const initMetaMaskSnapWallet = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
if (!metaMaskSnapWallet) {
|
|
22
|
+
index_cjs_js.init({
|
|
23
|
+
name: 'MetaMaskStarknetSnapWallet',
|
|
24
|
+
remotes: [
|
|
25
|
+
{
|
|
26
|
+
alias: 'MetaMaskStarknetSnapWallet',
|
|
27
|
+
entry: 'https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js',
|
|
28
|
+
name: 'MetaMaskStarknetSnapWallet',
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
});
|
|
32
|
+
const result = yield index_cjs_js.loadRemote('MetaMaskStarknetSnapWallet/index');
|
|
33
|
+
const { MetaMaskSnapWallet } = result;
|
|
34
|
+
metaMaskSnapWallet = new MetaMaskSnapWallet(provider, '*');
|
|
35
|
+
}
|
|
36
|
+
});
|
|
16
37
|
const metaMaskProviderWrapper = {
|
|
17
38
|
get account() {
|
|
18
39
|
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.account;
|
|
@@ -21,21 +42,7 @@ const createMetaMaskProviderWrapper = (provider) => {
|
|
|
21
42
|
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.chainId;
|
|
22
43
|
},
|
|
23
44
|
enable: () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
-
|
|
25
|
-
yield index_cjs_js.init({
|
|
26
|
-
name: 'MetaMaskStarknetSnapWallet',
|
|
27
|
-
remotes: [
|
|
28
|
-
{
|
|
29
|
-
alias: 'MetaMaskStarknetSnapWallet',
|
|
30
|
-
entry: 'https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js',
|
|
31
|
-
name: 'MetaMaskStarknetSnapWallet',
|
|
32
|
-
},
|
|
33
|
-
],
|
|
34
|
-
});
|
|
35
|
-
const result = yield index_cjs_js.loadRemote('MetaMaskStarknetSnapWallet/index');
|
|
36
|
-
const { MetaMaskSnapWallet } = result;
|
|
37
|
-
metaMaskSnapWallet = new MetaMaskSnapWallet(provider, '*');
|
|
38
|
-
}
|
|
45
|
+
yield initMetaMaskSnapWallet();
|
|
39
46
|
if (!metaMaskSnapWallet) {
|
|
40
47
|
return [];
|
|
41
48
|
}
|
|
@@ -46,7 +53,11 @@ const createMetaMaskProviderWrapper = (provider) => {
|
|
|
46
53
|
get isConnected() {
|
|
47
54
|
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isConnected;
|
|
48
55
|
},
|
|
49
|
-
isPreauthorized: () =>
|
|
56
|
+
isPreauthorized: () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
57
|
+
var _a;
|
|
58
|
+
yield initMetaMaskSnapWallet();
|
|
59
|
+
return (_a = (yield (metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isPreauthorized()))) !== null && _a !== void 0 ? _a : false;
|
|
60
|
+
}),
|
|
50
61
|
name: 'MetaMaskStarknetSnapWallet',
|
|
51
62
|
off: (
|
|
52
63
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -2,13 +2,34 @@
|
|
|
2
2
|
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
3
|
import { init, loadRemote } from '@module-federation/runtime/dist/index.cjs.js';
|
|
4
4
|
|
|
5
|
-
let metaMaskSnapWallet;
|
|
6
5
|
/**
|
|
7
6
|
*
|
|
8
7
|
* @param {IEthereum} provider the metamask window provider object
|
|
9
8
|
* @returns {StarknetWindowObject} the metamask provider wrapper formed into starknet window object
|
|
10
9
|
*/
|
|
11
10
|
const createMetaMaskProviderWrapper = (provider) => {
|
|
11
|
+
let metaMaskSnapWallet;
|
|
12
|
+
// using @module-federation to load the get-starknet remoteEntry, as recommended
|
|
13
|
+
// by the starknet team. this file is a small wrapper around the metamask snap api
|
|
14
|
+
// to communicate with starknet, which we then wrap into a starknet window object
|
|
15
|
+
// and use in our starknet connector, just like braavos and argent
|
|
16
|
+
const initMetaMaskSnapWallet = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
if (!metaMaskSnapWallet) {
|
|
18
|
+
init({
|
|
19
|
+
name: 'MetaMaskStarknetSnapWallet',
|
|
20
|
+
remotes: [
|
|
21
|
+
{
|
|
22
|
+
alias: 'MetaMaskStarknetSnapWallet',
|
|
23
|
+
entry: 'https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js',
|
|
24
|
+
name: 'MetaMaskStarknetSnapWallet',
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
});
|
|
28
|
+
const result = yield loadRemote('MetaMaskStarknetSnapWallet/index');
|
|
29
|
+
const { MetaMaskSnapWallet } = result;
|
|
30
|
+
metaMaskSnapWallet = new MetaMaskSnapWallet(provider, '*');
|
|
31
|
+
}
|
|
32
|
+
});
|
|
12
33
|
const metaMaskProviderWrapper = {
|
|
13
34
|
get account() {
|
|
14
35
|
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.account;
|
|
@@ -17,21 +38,7 @@ const createMetaMaskProviderWrapper = (provider) => {
|
|
|
17
38
|
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.chainId;
|
|
18
39
|
},
|
|
19
40
|
enable: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
-
|
|
21
|
-
yield init({
|
|
22
|
-
name: 'MetaMaskStarknetSnapWallet',
|
|
23
|
-
remotes: [
|
|
24
|
-
{
|
|
25
|
-
alias: 'MetaMaskStarknetSnapWallet',
|
|
26
|
-
entry: 'https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js',
|
|
27
|
-
name: 'MetaMaskStarknetSnapWallet',
|
|
28
|
-
},
|
|
29
|
-
],
|
|
30
|
-
});
|
|
31
|
-
const result = yield loadRemote('MetaMaskStarknetSnapWallet/index');
|
|
32
|
-
const { MetaMaskSnapWallet } = result;
|
|
33
|
-
metaMaskSnapWallet = new MetaMaskSnapWallet(provider, '*');
|
|
34
|
-
}
|
|
41
|
+
yield initMetaMaskSnapWallet();
|
|
35
42
|
if (!metaMaskSnapWallet) {
|
|
36
43
|
return [];
|
|
37
44
|
}
|
|
@@ -42,7 +49,11 @@ const createMetaMaskProviderWrapper = (provider) => {
|
|
|
42
49
|
get isConnected() {
|
|
43
50
|
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isConnected;
|
|
44
51
|
},
|
|
45
|
-
isPreauthorized: () =>
|
|
52
|
+
isPreauthorized: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
+
var _a;
|
|
54
|
+
yield initMetaMaskSnapWallet();
|
|
55
|
+
return (_a = (yield (metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isPreauthorized()))) !== null && _a !== void 0 ? _a : false;
|
|
56
|
+
}),
|
|
46
57
|
name: 'MetaMaskStarknetSnapWallet',
|
|
47
58
|
off: (
|
|
48
59
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
7
|
+
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
8
|
+
var utils = require('@dynamic-labs/utils');
|
|
9
|
+
|
|
10
|
+
class StarknetWallet extends walletConnectorCore.Wallet {
|
|
11
|
+
getWalletAccount() {
|
|
12
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
13
|
+
const account = yield this._connector.getWalletAccount();
|
|
14
|
+
if (!account) {
|
|
15
|
+
throw new Error('unable to retrieve Starknet wallet account');
|
|
16
|
+
}
|
|
17
|
+
utils.wrapMethodWithCallback(account, 'signMessage', (originalSignMessage, typedData) => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
yield this.sync();
|
|
19
|
+
return originalSignMessage(typedData);
|
|
20
|
+
}));
|
|
21
|
+
return account;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
getProvider() {
|
|
25
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
const provider = yield this._connector.getProvider();
|
|
27
|
+
if (!provider) {
|
|
28
|
+
throw new Error('unable to retrieve Starknet provider');
|
|
29
|
+
}
|
|
30
|
+
utils.wrapMethodWithCallback(provider, 'callContract', (originalCallContract, call, blockIdentifier) => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
yield this.sync();
|
|
32
|
+
return originalCallContract(call, blockIdentifier);
|
|
33
|
+
}));
|
|
34
|
+
utils.wrapMethodWithCallback(provider, 'deployAccountContract', (originalDeployAccountContract, payload, details) => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
yield this.sync();
|
|
36
|
+
return originalDeployAccountContract(payload, details);
|
|
37
|
+
}));
|
|
38
|
+
return provider;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
exports.StarknetWallet = StarknetWallet;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AccountInterface, ProviderInterface } from 'starknet';
|
|
2
|
+
import { Wallet } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
+
import StarknetWalletConnector from '../starknetWalletConnector';
|
|
4
|
+
export declare class StarknetWallet extends Wallet<StarknetWalletConnector> {
|
|
5
|
+
getWalletAccount(): Promise<AccountInterface>;
|
|
6
|
+
getProvider(): Promise<ProviderInterface>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
|
+
import { Wallet } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
+
import { wrapMethodWithCallback } from '@dynamic-labs/utils';
|
|
5
|
+
|
|
6
|
+
class StarknetWallet extends Wallet {
|
|
7
|
+
getWalletAccount() {
|
|
8
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
9
|
+
const account = yield this._connector.getWalletAccount();
|
|
10
|
+
if (!account) {
|
|
11
|
+
throw new Error('unable to retrieve Starknet wallet account');
|
|
12
|
+
}
|
|
13
|
+
wrapMethodWithCallback(account, 'signMessage', (originalSignMessage, typedData) => __awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
yield this.sync();
|
|
15
|
+
return originalSignMessage(typedData);
|
|
16
|
+
}));
|
|
17
|
+
return account;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
getProvider() {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
const provider = yield this._connector.getProvider();
|
|
23
|
+
if (!provider) {
|
|
24
|
+
throw new Error('unable to retrieve Starknet provider');
|
|
25
|
+
}
|
|
26
|
+
wrapMethodWithCallback(provider, 'callContract', (originalCallContract, call, blockIdentifier) => __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
yield this.sync();
|
|
28
|
+
return originalCallContract(call, blockIdentifier);
|
|
29
|
+
}));
|
|
30
|
+
wrapMethodWithCallback(provider, 'deployAccountContract', (originalDeployAccountContract, payload, details) => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
yield this.sync();
|
|
32
|
+
return originalDeployAccountContract(payload, details);
|
|
33
|
+
}));
|
|
34
|
+
return provider;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { StarknetWallet };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './isStarknetWallet';
|
package/src/wallets/argentx.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
2
2
|
import StarknetProvider from '../starknetWalletConnector';
|
|
3
|
-
export declare class ArgentX extends StarknetProvider implements
|
|
3
|
+
export declare class ArgentX extends StarknetProvider implements WalletConnectorBase {
|
|
4
4
|
overrideKey: string;
|
|
5
5
|
constructor(opts: any);
|
|
6
6
|
getConnectedAccounts(): Promise<string[]>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { StarknetWindowObject } from 'get-starknet-core';
|
|
2
2
|
import { constants } from 'starknet';
|
|
3
|
-
import {
|
|
3
|
+
import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
4
4
|
import StarknetProvider from '../starknetWalletConnector';
|
|
5
|
-
declare abstract class ArgentXBase extends StarknetProvider implements
|
|
5
|
+
declare abstract class ArgentXBase extends StarknetProvider implements WalletConnectorBase {
|
|
6
6
|
canConnectViaCustodialService: boolean;
|
|
7
7
|
wallet: StarknetWindowObject | undefined;
|
|
8
8
|
abstract connect(): Promise<void>;
|
package/src/wallets/bitget.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
2
2
|
import StarknetProvider from '../starknetWalletConnector';
|
|
3
|
-
export declare class Bitget extends StarknetProvider implements
|
|
3
|
+
export declare class Bitget extends StarknetProvider implements WalletConnectorBase {
|
|
4
4
|
overrideKey: string;
|
|
5
5
|
constructor(opts: any);
|
|
6
6
|
isProviderConnected(): boolean;
|
package/src/wallets/braavos.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
2
2
|
import StarknetProvider from '../starknetWalletConnector';
|
|
3
|
-
export declare class Braavos extends StarknetProvider implements
|
|
3
|
+
export declare class Braavos extends StarknetProvider implements WalletConnectorBase {
|
|
4
4
|
overrideKey: string;
|
|
5
5
|
constructor(opts: any);
|
|
6
6
|
getAddress(): Promise<string | undefined>;
|