@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/starknet",
3
- "version": "3.0.0-alpha.6",
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.470",
33
+ "@dynamic-labs/sdk-api-core": "0.0.526",
34
34
  "@module-federation/runtime": "0.1.18",
35
- "@dynamic-labs/rpc-provider-starknet": "3.0.0-alpha.6",
36
- "@dynamic-labs/utils": "3.0.0-alpha.6",
37
- "@dynamic-labs/wallet-book": "3.0.0-alpha.6",
38
- "@dynamic-labs/wallet-connector-core": "3.0.0-alpha.6"
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/rpc-provider-starknet');
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/rpc-provider-starknet';
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/rpc-provider-starknet';
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
- getSigner() {
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
- getWalletClient() {
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 walletAddress = yield this.getAddress();
139
- const provider = yield this.getWalletClient();
140
- if (!walletAddress || !provider) {
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(walletAddress);
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/rpc-provider-starknet';
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
- getSigner(): Promise<AccountInterface | undefined>;
99
- getWalletClient(): Promise<ProviderInterface | undefined>;
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
- getSigner() {
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
- getWalletClient() {
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 walletAddress = yield this.getAddress();
135
- const provider = yield this.getWalletClient();
136
- if (!walletAddress || !provider) {
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(walletAddress);
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
- if (!metaMaskSnapWallet) {
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: () => { var _a; return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isPreauthorized()) !== null && _a !== void 0 ? _a : Promise.resolve(false); },
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
- if (!metaMaskSnapWallet) {
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: () => { var _a; return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isPreauthorized()) !== null && _a !== void 0 ? _a : Promise.resolve(false); },
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,2 @@
1
+ export * from './StarknetWallet';
2
+ export * from './isStarknetWallet';
@@ -0,0 +1 @@
1
+ export * from './isStarknetWallet';
@@ -0,0 +1,8 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ const isStarknetWallet = (wallet) => wallet.chain === 'STARK';
7
+
8
+ exports.isStarknetWallet = isStarknetWallet;
@@ -0,0 +1,3 @@
1
+ import { Wallet } from '@dynamic-labs/wallet-connector-core';
2
+ import { StarknetWallet } from '../StarknetWallet';
3
+ export declare const isStarknetWallet: (wallet: Wallet) => wallet is StarknetWallet;
@@ -0,0 +1,4 @@
1
+ 'use client'
2
+ const isStarknetWallet = (wallet) => wallet.chain === 'STARK';
3
+
4
+ export { isStarknetWallet };
@@ -1,6 +1,6 @@
1
- import { WalletConnector } from '@dynamic-labs/wallet-connector-core';
1
+ import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
2
2
  import StarknetProvider from '../starknetWalletConnector';
3
- export declare class ArgentX extends StarknetProvider implements WalletConnector {
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 { WalletConnector } from '@dynamic-labs/wallet-connector-core';
3
+ import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
4
4
  import StarknetProvider from '../starknetWalletConnector';
5
- declare abstract class ArgentXBase extends StarknetProvider implements WalletConnector {
5
+ declare abstract class ArgentXBase extends StarknetProvider implements WalletConnectorBase {
6
6
  canConnectViaCustodialService: boolean;
7
7
  wallet: StarknetWindowObject | undefined;
8
8
  abstract connect(): Promise<void>;
@@ -1,6 +1,6 @@
1
- import type { WalletConnector } from '@dynamic-labs/wallet-connector-core';
1
+ import type { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
2
2
  import StarknetProvider from '../starknetWalletConnector';
3
- export declare class Bitget extends StarknetProvider implements WalletConnector {
3
+ export declare class Bitget extends StarknetProvider implements WalletConnectorBase {
4
4
  overrideKey: string;
5
5
  constructor(opts: any);
6
6
  isProviderConnected(): boolean;
@@ -1,6 +1,6 @@
1
- import type { WalletConnector } from '@dynamic-labs/wallet-connector-core';
1
+ import type { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
2
2
  import StarknetProvider from '../starknetWalletConnector';
3
- export declare class Braavos extends StarknetProvider implements WalletConnector {
3
+ export declare class Braavos extends StarknetProvider implements WalletConnectorBase {
4
4
  overrideKey: string;
5
5
  constructor(opts: any);
6
6
  getAddress(): Promise<string | undefined>;