@dynamic-labs/starknet 4.0.0-alpha.8 → 4.0.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 (68) hide show
  1. package/CHANGELOG.md +496 -1
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +14 -12
  5. package/src/StarknetWalletConnector.cjs +232 -0
  6. package/src/StarknetWalletConnector.d.ts +58 -0
  7. package/src/StarknetWalletConnector.js +228 -0
  8. package/src/index.cjs +14 -12
  9. package/src/index.d.ts +16 -7
  10. package/src/index.js +12 -12
  11. package/src/types.d.ts +26 -11
  12. package/src/utils/convertors.cjs +1 -1
  13. package/src/utils/convertors.d.ts +1 -1
  14. package/src/utils/convertors.js +1 -1
  15. package/src/wallet/StarknetWallet.cjs +24 -3
  16. package/src/wallet/StarknetWallet.d.ts +14 -4
  17. package/src/wallet/StarknetWallet.js +24 -3
  18. package/src/wallets/argent/argentMobile/argentMobile.cjs +70 -0
  19. package/src/wallets/argent/argentMobile/argentMobile.d.ts +16 -0
  20. package/src/wallets/argent/argentMobile/argentMobile.js +66 -0
  21. package/src/wallets/argent/base.cjs +50 -0
  22. package/src/wallets/argent/base.d.ts +5 -0
  23. package/src/wallets/argent/base.js +46 -0
  24. package/src/wallets/argent/injected/argentx.cjs +33 -0
  25. package/src/wallets/argent/injected/argentx.d.ts +8 -0
  26. package/src/wallets/argent/injected/argentx.js +29 -0
  27. package/src/wallets/argent/webwallet/webwallet.cjs +37 -0
  28. package/src/wallets/argent/webwallet/webwallet.d.ts +10 -0
  29. package/src/wallets/argent/webwallet/webwallet.js +33 -0
  30. package/src/wallets/injected/braavos.cjs +31 -0
  31. package/src/wallets/injected/braavos.d.ts +13 -0
  32. package/src/wallets/injected/braavos.js +27 -0
  33. package/src/wallets/injected/fetchStarknetInjectedWalletConnectors.cjs +35 -0
  34. package/src/wallets/injected/fetchStarknetInjectedWalletConnectors.d.ts +5 -0
  35. package/src/wallets/injected/fetchStarknetInjectedWalletConnectors.js +31 -0
  36. package/src/wallets/injected/injected.cjs +141 -0
  37. package/src/wallets/injected/injected.d.ts +10 -0
  38. package/src/wallets/injected/injected.js +137 -0
  39. package/src/wallets/{metamask.cjs → injected/metamask.cjs} +19 -29
  40. package/src/wallets/{metamask.d.ts → injected/metamask.d.ts} +2 -4
  41. package/src/wallets/{metamask.js → injected/metamask.js} +15 -29
  42. package/src/starknetWalletConnector.cjs +0 -320
  43. package/src/starknetWalletConnector.d.ts +0 -127
  44. package/src/starknetWalletConnector.js +0 -314
  45. package/src/utils/starknetSnap.cjs +0 -92
  46. package/src/utils/starknetSnap.d.ts +0 -8
  47. package/src/utils/starknetSnap.js +0 -88
  48. package/src/wallets/argentx.cjs +0 -24
  49. package/src/wallets/argentx.d.ts +0 -8
  50. package/src/wallets/argentx.js +0 -20
  51. package/src/wallets/argentxBase.cjs +0 -50
  52. package/src/wallets/argentxBase.d.ts +0 -16
  53. package/src/wallets/argentxBase.js +0 -48
  54. package/src/wallets/argentxMobile.cjs +0 -100
  55. package/src/wallets/argentxMobile.d.ts +0 -13
  56. package/src/wallets/argentxMobile.js +0 -96
  57. package/src/wallets/argentxWeb.cjs +0 -57
  58. package/src/wallets/argentxWeb.d.ts +0 -8
  59. package/src/wallets/argentxWeb.js +0 -53
  60. package/src/wallets/bitget.cjs +0 -22
  61. package/src/wallets/bitget.d.ts +0 -7
  62. package/src/wallets/bitget.js +0 -18
  63. package/src/wallets/braavos.cjs +0 -37
  64. package/src/wallets/braavos.d.ts +0 -8
  65. package/src/wallets/braavos.js +0 -33
  66. package/src/wallets/okx.cjs +0 -15
  67. package/src/wallets/okx.d.ts +0 -6
  68. package/src/wallets/okx.js +0 -11
@@ -30,7 +30,7 @@ const defaultTypedData = {
30
30
  ],
31
31
  },
32
32
  };
33
- const formatTypedDataMessage = (inputMessage, chainId = starknet.constants.NetworkName.SN_MAIN) => {
33
+ const formatTypedDataMessage = (inputMessage, chainId = starknet.constants.StarknetChainId.SN_MAIN) => {
34
34
  let nonce, domain;
35
35
  try {
36
36
  const { nonce: parsedNonce, domain: parsedDomain } = JSON.parse(inputMessage);
@@ -1,2 +1,2 @@
1
1
  import { TypedData, constants } from 'starknet';
2
- export declare const formatTypedDataMessage: (inputMessage: string, chainId?: constants.NetworkName) => TypedData;
2
+ export declare const formatTypedDataMessage: (inputMessage: string, chainId?: constants.StarknetChainId) => TypedData;
@@ -26,7 +26,7 @@ const defaultTypedData = {
26
26
  ],
27
27
  },
28
28
  };
29
- const formatTypedDataMessage = (inputMessage, chainId = constants.NetworkName.SN_MAIN) => {
29
+ const formatTypedDataMessage = (inputMessage, chainId = constants.StarknetChainId.SN_MAIN) => {
30
30
  let nonce, domain;
31
31
  try {
32
32
  const { nonce: parsedNonce, domain: parsedDomain } = JSON.parse(inputMessage);
@@ -4,10 +4,34 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../_virtual/_tslib.cjs');
7
+ var starknet = require('starknet');
7
8
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
9
  var utils = require('@dynamic-labs/utils');
10
+ var constants = require('../constants.cjs');
11
+ var ethereumContractAbi = require('../ethereumContractAbi.cjs');
9
12
 
10
13
  class StarknetWallet extends walletConnectorCore.Wallet {
14
+ /**
15
+ * Sends the native balance of the wallet to the given address.
16
+ * @param amount - The amount of balance to send (in Starknet ETH).
17
+ * @param toAddress - The address to send the balance to.
18
+ * @returns The signature of the sent transaction.
19
+ */
20
+ sendBalance(_a) {
21
+ return _tslib.__awaiter(this, arguments, void 0, function* ({ amount, toAddress, }) {
22
+ yield this._connector.connect();
23
+ const account = yield this._connector.getWalletAccount();
24
+ if (!account) {
25
+ throw new Error('unable to retrieve Starknet wallet account');
26
+ }
27
+ const contract = new starknet.Contract(ethereumContractAbi, constants.ETH_STARKNET_ADDRESS, account);
28
+ const transfer = yield contract.invoke('transfer', [
29
+ toAddress,
30
+ starknet.cairo.uint256(Number(amount) * 1e18),
31
+ ]);
32
+ return transfer === null || transfer === void 0 ? void 0 : transfer.transaction_hash;
33
+ });
34
+ }
11
35
  getWalletAccount() {
12
36
  return _tslib.__awaiter(this, void 0, void 0, function* () {
13
37
  const account = yield this._connector.getWalletAccount();
@@ -24,9 +48,6 @@ class StarknetWallet extends walletConnectorCore.Wallet {
24
48
  getProvider() {
25
49
  return _tslib.__awaiter(this, void 0, void 0, function* () {
26
50
  const provider = yield this._connector.getProvider();
27
- if (!provider) {
28
- throw new Error('unable to retrieve Starknet provider');
29
- }
30
51
  utils.wrapMethodWithCallback(provider, 'callContract', (originalCallContract, call, blockIdentifier) => _tslib.__awaiter(this, void 0, void 0, function* () {
31
52
  yield this.sync();
32
53
  return originalCallContract(call, blockIdentifier);
@@ -1,7 +1,17 @@
1
- import { AccountInterface, ProviderInterface } from 'starknet';
1
+ import { RpcProvider, WalletAccount } from 'starknet';
2
2
  import { Wallet } from '@dynamic-labs/wallet-connector-core';
3
- import StarknetWalletConnector from '../starknetWalletConnector';
3
+ import { StarknetWalletConnector } from '../StarknetWalletConnector';
4
4
  export declare class StarknetWallet extends Wallet<StarknetWalletConnector> {
5
- getWalletAccount(): Promise<AccountInterface>;
6
- getProvider(): Promise<ProviderInterface>;
5
+ /**
6
+ * Sends the native balance of the wallet to the given address.
7
+ * @param amount - The amount of balance to send (in Starknet ETH).
8
+ * @param toAddress - The address to send the balance to.
9
+ * @returns The signature of the sent transaction.
10
+ */
11
+ sendBalance({ amount, toAddress, }: {
12
+ amount: string;
13
+ toAddress: string;
14
+ }): Promise<string>;
15
+ getWalletAccount(): Promise<WalletAccount>;
16
+ getProvider(): Promise<RpcProvider>;
7
17
  }
@@ -1,9 +1,33 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../_virtual/_tslib.js';
3
+ import { Contract, cairo } from 'starknet';
3
4
  import { Wallet } from '@dynamic-labs/wallet-connector-core';
4
5
  import { wrapMethodWithCallback } from '@dynamic-labs/utils';
6
+ import { ETH_STARKNET_ADDRESS } from '../constants.js';
7
+ import ETH_CONTRACT_ABI from '../ethereumContractAbi.js';
5
8
 
6
9
  class StarknetWallet extends Wallet {
10
+ /**
11
+ * Sends the native balance of the wallet to the given address.
12
+ * @param amount - The amount of balance to send (in Starknet ETH).
13
+ * @param toAddress - The address to send the balance to.
14
+ * @returns The signature of the sent transaction.
15
+ */
16
+ sendBalance(_a) {
17
+ return __awaiter(this, arguments, void 0, function* ({ amount, toAddress, }) {
18
+ yield this._connector.connect();
19
+ const account = yield this._connector.getWalletAccount();
20
+ if (!account) {
21
+ throw new Error('unable to retrieve Starknet wallet account');
22
+ }
23
+ const contract = new Contract(ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS, account);
24
+ const transfer = yield contract.invoke('transfer', [
25
+ toAddress,
26
+ cairo.uint256(Number(amount) * 1e18),
27
+ ]);
28
+ return transfer === null || transfer === void 0 ? void 0 : transfer.transaction_hash;
29
+ });
30
+ }
7
31
  getWalletAccount() {
8
32
  return __awaiter(this, void 0, void 0, function* () {
9
33
  const account = yield this._connector.getWalletAccount();
@@ -20,9 +44,6 @@ class StarknetWallet extends Wallet {
20
44
  getProvider() {
21
45
  return __awaiter(this, void 0, void 0, function* () {
22
46
  const provider = yield this._connector.getProvider();
23
- if (!provider) {
24
- throw new Error('unable to retrieve Starknet provider');
25
- }
26
47
  wrapMethodWithCallback(provider, 'callContract', (originalCallContract, call, blockIdentifier) => __awaiter(this, void 0, void 0, function* () {
27
48
  yield this.sync();
28
49
  return originalCallContract(call, blockIdentifier);
@@ -0,0 +1,70 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../_virtual/_tslib.cjs');
7
+ var starknetkit = require('starknetkit');
8
+ var argentMobile = require('starknetkit/argentMobile');
9
+ var starknet = require('starknet');
10
+ var base = require('../base.cjs');
11
+
12
+ class ArgentMobile extends base.ArgentBase {
13
+ constructor(opts) {
14
+ super('Argent X - Mobile', 'argentXMobile', opts);
15
+ this.canConnectViaCustodialService = true;
16
+ this.overrideKey = 'argentxmobile';
17
+ this.projectId = opts.projectId;
18
+ this.appName = opts.appName;
19
+ this.appLogoUrls = opts.appLogoUrl
20
+ ? [opts.appLogoUrl]
21
+ : undefined;
22
+ }
23
+ isInstalledOnBrowser() {
24
+ return false;
25
+ }
26
+ filter() {
27
+ return super.filter() && !argentMobile.isInArgentMobileAppBrowser();
28
+ }
29
+ prompt(options) {
30
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
31
+ const { connectorData, wallet } = yield starknetkit.connect({
32
+ connectors: [
33
+ new argentMobile.ArgentMobileBaseConnector({
34
+ chainId: this.getNetworkName() || starknet.constants.NetworkName.SN_MAIN,
35
+ dappName: this.appName,
36
+ icons: this.appLogoUrls,
37
+ projectId: this.projectId,
38
+ rpcUrl: this.getNodeUrl(),
39
+ url: window.location.hostname,
40
+ }),
41
+ ],
42
+ modalMode: options.silently ? 'neverAsk' : 'canAsk',
43
+ });
44
+ return {
45
+ data: {
46
+ account: connectorData === null || connectorData === void 0 ? void 0 : connectorData.account,
47
+ chainId: connectorData === null || connectorData === void 0 ? void 0 : connectorData.chainId,
48
+ },
49
+ wallet: wallet !== null && wallet !== void 0 ? wallet : undefined,
50
+ };
51
+ });
52
+ }
53
+ getNetworkName() {
54
+ const [network] = this.starknetNetworks;
55
+ if (!network) {
56
+ return undefined;
57
+ }
58
+ return this.mapChainIdToNetworkName(network.chainId);
59
+ }
60
+ getNodeUrl() {
61
+ var _a;
62
+ const [network] = this.starknetNetworks;
63
+ if (!network) {
64
+ return undefined;
65
+ }
66
+ return ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
67
+ }
68
+ }
69
+
70
+ exports.ArgentMobile = ArgentMobile;
@@ -0,0 +1,16 @@
1
+ import { PromptOptions, PromptResult } from '../../../types';
2
+ import { ArgentBase } from '../base';
3
+ export declare class ArgentMobile extends ArgentBase {
4
+ private projectId;
5
+ private appName;
6
+ private appLogoUrls;
7
+ canConnectViaCustodialService: boolean;
8
+ overrideKey: string;
9
+ constructor(opts: any);
10
+ isInstalledOnBrowser(): boolean;
11
+ filter(): boolean;
12
+ prompt(options: PromptOptions): Promise<PromptResult>;
13
+ private getNetworkName;
14
+ private getNodeUrl;
15
+ }
16
+ export type ArgentMobileWalletConnectorType = ArgentMobile;
@@ -0,0 +1,66 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../_virtual/_tslib.js';
3
+ import { connect } from 'starknetkit';
4
+ import { isInArgentMobileAppBrowser, ArgentMobileBaseConnector } from 'starknetkit/argentMobile';
5
+ import { constants } from 'starknet';
6
+ import { ArgentBase } from '../base.js';
7
+
8
+ class ArgentMobile extends ArgentBase {
9
+ constructor(opts) {
10
+ super('Argent X - Mobile', 'argentXMobile', opts);
11
+ this.canConnectViaCustodialService = true;
12
+ this.overrideKey = 'argentxmobile';
13
+ this.projectId = opts.projectId;
14
+ this.appName = opts.appName;
15
+ this.appLogoUrls = opts.appLogoUrl
16
+ ? [opts.appLogoUrl]
17
+ : undefined;
18
+ }
19
+ isInstalledOnBrowser() {
20
+ return false;
21
+ }
22
+ filter() {
23
+ return super.filter() && !isInArgentMobileAppBrowser();
24
+ }
25
+ prompt(options) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ const { connectorData, wallet } = yield connect({
28
+ connectors: [
29
+ new ArgentMobileBaseConnector({
30
+ chainId: this.getNetworkName() || constants.NetworkName.SN_MAIN,
31
+ dappName: this.appName,
32
+ icons: this.appLogoUrls,
33
+ projectId: this.projectId,
34
+ rpcUrl: this.getNodeUrl(),
35
+ url: window.location.hostname,
36
+ }),
37
+ ],
38
+ modalMode: options.silently ? 'neverAsk' : 'canAsk',
39
+ });
40
+ return {
41
+ data: {
42
+ account: connectorData === null || connectorData === void 0 ? void 0 : connectorData.account,
43
+ chainId: connectorData === null || connectorData === void 0 ? void 0 : connectorData.chainId,
44
+ },
45
+ wallet: wallet !== null && wallet !== void 0 ? wallet : undefined,
46
+ };
47
+ });
48
+ }
49
+ getNetworkName() {
50
+ const [network] = this.starknetNetworks;
51
+ if (!network) {
52
+ return undefined;
53
+ }
54
+ return this.mapChainIdToNetworkName(network.chainId);
55
+ }
56
+ getNodeUrl() {
57
+ var _a;
58
+ const [network] = this.starknetNetworks;
59
+ if (!network) {
60
+ return undefined;
61
+ }
62
+ return ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
63
+ }
64
+ }
65
+
66
+ export { ArgentMobile };
@@ -0,0 +1,50 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../_virtual/_tslib.cjs');
7
+ var starknetkit = require('starknetkit');
8
+ var StarknetWalletConnector = require('../../StarknetWalletConnector.cjs');
9
+
10
+ class ArgentBase extends StarknetWalletConnector.StarknetWalletConnector {
11
+ getConnectedAccounts() {
12
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
13
+ var _a;
14
+ if ((_a = this.walletData) === null || _a === void 0 ? void 0 : _a.account) {
15
+ return [this.walletData.account];
16
+ }
17
+ let data;
18
+ let wallet;
19
+ this.logger.debug('[getConnectedAccounts] No existing account, attempting to silently connect');
20
+ try {
21
+ ({ data, wallet } = yield this.prompt({
22
+ silently: true,
23
+ }));
24
+ }
25
+ catch (error) {
26
+ this.logger.debug(`[getConnectedAccounts] Silent connect errored out: ${error}`);
27
+ return [];
28
+ }
29
+ this.logger.debug(`[getConnectedAccounts] Connect returned account: ${data === null || data === void 0 ? void 0 : data.account}`);
30
+ if (!(data === null || data === void 0 ? void 0 : data.account) || !wallet) {
31
+ return [];
32
+ }
33
+ this.walletData = data;
34
+ this.wallet = wallet;
35
+ this.setupEventListeners();
36
+ return [data.account];
37
+ });
38
+ }
39
+ endSession() {
40
+ const _super = Object.create(null, {
41
+ endSession: { get: () => super.endSession }
42
+ });
43
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
44
+ yield _super.endSession.call(this);
45
+ yield starknetkit.disconnect();
46
+ });
47
+ }
48
+ }
49
+
50
+ exports.ArgentBase = ArgentBase;
@@ -0,0 +1,5 @@
1
+ import { StarknetWalletConnector } from '../../StarknetWalletConnector';
2
+ export declare abstract class ArgentBase extends StarknetWalletConnector {
3
+ getConnectedAccounts(): Promise<string[]>;
4
+ endSession(): Promise<void>;
5
+ }
@@ -0,0 +1,46 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../_virtual/_tslib.js';
3
+ import { disconnect } from 'starknetkit';
4
+ import { StarknetWalletConnector } from '../../StarknetWalletConnector.js';
5
+
6
+ class ArgentBase extends StarknetWalletConnector {
7
+ getConnectedAccounts() {
8
+ return __awaiter(this, void 0, void 0, function* () {
9
+ var _a;
10
+ if ((_a = this.walletData) === null || _a === void 0 ? void 0 : _a.account) {
11
+ return [this.walletData.account];
12
+ }
13
+ let data;
14
+ let wallet;
15
+ this.logger.debug('[getConnectedAccounts] No existing account, attempting to silently connect');
16
+ try {
17
+ ({ data, wallet } = yield this.prompt({
18
+ silently: true,
19
+ }));
20
+ }
21
+ catch (error) {
22
+ this.logger.debug(`[getConnectedAccounts] Silent connect errored out: ${error}`);
23
+ return [];
24
+ }
25
+ this.logger.debug(`[getConnectedAccounts] Connect returned account: ${data === null || data === void 0 ? void 0 : data.account}`);
26
+ if (!(data === null || data === void 0 ? void 0 : data.account) || !wallet) {
27
+ return [];
28
+ }
29
+ this.walletData = data;
30
+ this.wallet = wallet;
31
+ this.setupEventListeners();
32
+ return [data.account];
33
+ });
34
+ }
35
+ endSession() {
36
+ const _super = Object.create(null, {
37
+ endSession: { get: () => super.endSession }
38
+ });
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ yield _super.endSession.call(this);
41
+ yield disconnect();
42
+ });
43
+ }
44
+ }
45
+
46
+ export { ArgentBase };
@@ -0,0 +1,33 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../_virtual/_tslib.cjs');
7
+ var starknetkit = require('starknetkit');
8
+ var injected = require('starknetkit/injected');
9
+ var base = require('../base.cjs');
10
+
11
+ class ArgentX extends base.ArgentBase {
12
+ constructor(opts) {
13
+ super('Argent X', 'argentX', opts);
14
+ this.overrideKey = 'argentx';
15
+ }
16
+ prompt() {
17
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
18
+ const { connectorData, wallet } = yield starknetkit.connect({
19
+ connectors: [new injected.InjectedConnector({ options: { id: this.id } })],
20
+ modalMode: 'canAsk',
21
+ });
22
+ return {
23
+ data: {
24
+ account: connectorData === null || connectorData === void 0 ? void 0 : connectorData.account,
25
+ chainId: connectorData === null || connectorData === void 0 ? void 0 : connectorData.chainId,
26
+ },
27
+ wallet: wallet !== null && wallet !== void 0 ? wallet : undefined,
28
+ };
29
+ });
30
+ }
31
+ }
32
+
33
+ exports.ArgentX = ArgentX;
@@ -0,0 +1,8 @@
1
+ import { PromptResult } from '../../../types';
2
+ import { ArgentBase } from '../base';
3
+ export declare class ArgentX extends ArgentBase {
4
+ overrideKey: string;
5
+ constructor(opts: any);
6
+ prompt(): Promise<PromptResult>;
7
+ }
8
+ export type ArgentXWalletConnectorType = ArgentX;
@@ -0,0 +1,29 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../_virtual/_tslib.js';
3
+ import { connect } from 'starknetkit';
4
+ import { InjectedConnector } from 'starknetkit/injected';
5
+ import { ArgentBase } from '../base.js';
6
+
7
+ class ArgentX extends ArgentBase {
8
+ constructor(opts) {
9
+ super('Argent X', 'argentX', opts);
10
+ this.overrideKey = 'argentx';
11
+ }
12
+ prompt() {
13
+ return __awaiter(this, void 0, void 0, function* () {
14
+ const { connectorData, wallet } = yield connect({
15
+ connectors: [new InjectedConnector({ options: { id: this.id } })],
16
+ modalMode: 'canAsk',
17
+ });
18
+ return {
19
+ data: {
20
+ account: connectorData === null || connectorData === void 0 ? void 0 : connectorData.account,
21
+ chainId: connectorData === null || connectorData === void 0 ? void 0 : connectorData.chainId,
22
+ },
23
+ wallet: wallet !== null && wallet !== void 0 ? wallet : undefined,
24
+ };
25
+ });
26
+ }
27
+ }
28
+
29
+ export { ArgentX };
@@ -0,0 +1,37 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../_virtual/_tslib.cjs');
7
+ var starknetkit = require('starknetkit');
8
+ var webwallet = require('starknetkit/webwallet');
9
+ var base = require('../base.cjs');
10
+
11
+ class WebWallet extends base.ArgentBase {
12
+ constructor(opts) {
13
+ super('Argent X - Web', 'argentWebWallet', opts);
14
+ this.overrideKey = 'argentxweb';
15
+ this.canConnectViaCustodialService = true;
16
+ }
17
+ isInstalledOnBrowser() {
18
+ return false;
19
+ }
20
+ prompt(options) {
21
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
22
+ const { connectorData, wallet } = yield starknetkit.connect({
23
+ connectors: [new webwallet.WebWalletConnector({ url: 'https://web.argent.xyz' })],
24
+ modalMode: options.silently ? 'neverAsk' : 'canAsk',
25
+ });
26
+ return {
27
+ data: {
28
+ account: connectorData === null || connectorData === void 0 ? void 0 : connectorData.account,
29
+ chainId: connectorData === null || connectorData === void 0 ? void 0 : connectorData.chainId,
30
+ },
31
+ wallet: wallet !== null && wallet !== void 0 ? wallet : undefined,
32
+ };
33
+ });
34
+ }
35
+ }
36
+
37
+ exports.WebWallet = WebWallet;
@@ -0,0 +1,10 @@
1
+ import { PromptOptions, PromptResult } from '../../../types';
2
+ import { ArgentBase } from '../base';
3
+ export declare class WebWallet extends ArgentBase {
4
+ overrideKey: string;
5
+ canConnectViaCustodialService: boolean;
6
+ constructor(opts: any);
7
+ isInstalledOnBrowser(): boolean;
8
+ prompt(options: PromptOptions): Promise<PromptResult>;
9
+ }
10
+ export type WebWalletConnectorType = WebWallet;
@@ -0,0 +1,33 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../_virtual/_tslib.js';
3
+ import { connect } from 'starknetkit';
4
+ import { WebWalletConnector } from 'starknetkit/webwallet';
5
+ import { ArgentBase } from '../base.js';
6
+
7
+ class WebWallet extends ArgentBase {
8
+ constructor(opts) {
9
+ super('Argent X - Web', 'argentWebWallet', opts);
10
+ this.overrideKey = 'argentxweb';
11
+ this.canConnectViaCustodialService = true;
12
+ }
13
+ isInstalledOnBrowser() {
14
+ return false;
15
+ }
16
+ prompt(options) {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ const { connectorData, wallet } = yield connect({
19
+ connectors: [new WebWalletConnector({ url: 'https://web.argent.xyz' })],
20
+ modalMode: options.silently ? 'neverAsk' : 'canAsk',
21
+ });
22
+ return {
23
+ data: {
24
+ account: connectorData === null || connectorData === void 0 ? void 0 : connectorData.account,
25
+ chainId: connectorData === null || connectorData === void 0 ? void 0 : connectorData.chainId,
26
+ },
27
+ wallet: wallet !== null && wallet !== void 0 ? wallet : undefined,
28
+ };
29
+ });
30
+ }
31
+ }
32
+
33
+ export { WebWallet };
@@ -0,0 +1,31 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var utils = require('@dynamic-labs/utils');
7
+ var injected = require('./injected.cjs');
8
+
9
+ class Braavos extends injected.Injected {
10
+ constructor(opts) {
11
+ super('Braavos', 'braavos', opts);
12
+ this.overrideKey = 'braavos';
13
+ }
14
+ /**
15
+ * Adds a timeout for getConnectedAccounts request to prevent
16
+ * the SDK from becoming unresponsive when Braavos is locked and does not prompt
17
+ * the user to unlock
18
+ * If getConnectedAccounts() doesn't resolve within 3 seconds, the operation
19
+ * will timeout and return an empty array.
20
+ */
21
+ getConnectedAccounts() {
22
+ return utils.retryableFn(() => super.getConnectedAccounts(), {
23
+ fallbackValue: [],
24
+ maxRetries: 0,
25
+ retryStrategy: 'timeout-only',
26
+ timeoutMs: 3000,
27
+ });
28
+ }
29
+ }
30
+
31
+ exports.Braavos = Braavos;
@@ -0,0 +1,13 @@
1
+ import { Injected } from './injected';
2
+ export declare class Braavos extends Injected {
3
+ overrideKey: string;
4
+ constructor(opts: any);
5
+ /**
6
+ * Adds a timeout for getConnectedAccounts request to prevent
7
+ * the SDK from becoming unresponsive when Braavos is locked and does not prompt
8
+ * the user to unlock
9
+ * If getConnectedAccounts() doesn't resolve within 3 seconds, the operation
10
+ * will timeout and return an empty array.
11
+ */
12
+ getConnectedAccounts(): Promise<string[]>;
13
+ }
@@ -0,0 +1,27 @@
1
+ 'use client'
2
+ import { retryableFn } from '@dynamic-labs/utils';
3
+ import { Injected } from './injected.js';
4
+
5
+ class Braavos extends Injected {
6
+ constructor(opts) {
7
+ super('Braavos', 'braavos', opts);
8
+ this.overrideKey = 'braavos';
9
+ }
10
+ /**
11
+ * Adds a timeout for getConnectedAccounts request to prevent
12
+ * the SDK from becoming unresponsive when Braavos is locked and does not prompt
13
+ * the user to unlock
14
+ * If getConnectedAccounts() doesn't resolve within 3 seconds, the operation
15
+ * will timeout and return an empty array.
16
+ */
17
+ getConnectedAccounts() {
18
+ return retryableFn(() => super.getConnectedAccounts(), {
19
+ fallbackValue: [],
20
+ maxRetries: 0,
21
+ retryStrategy: 'timeout-only',
22
+ timeoutMs: 3000,
23
+ });
24
+ }
25
+ }
26
+
27
+ export { Braavos };
@@ -0,0 +1,35 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var injected = require('./injected.cjs');
7
+
8
+ const filteredStarknetWalletKeysOverrides = [
9
+ // TODO(starknet-v6): Remove once these wallets support v6
10
+ 'bitgetstarknet',
11
+ // Braavos has its own connector to implement specific logic
12
+ 'braavos',
13
+ ];
14
+ const fetchStarknetInjectedWalletConnectors = ({ walletBook, }) => {
15
+ var _a;
16
+ return Object.entries((_a = walletBook === null || walletBook === void 0 ? void 0 : walletBook.wallets) !== null && _a !== void 0 ? _a : {})
17
+ .filter(([key, wallet]) => {
18
+ var _a;
19
+ return ((_a = wallet.injectedConfig) === null || _a === void 0 ? void 0 : _a.find((config) => config.chain === 'starknet')) &&
20
+ !filteredStarknetWalletKeysOverrides.includes(key);
21
+ })
22
+ .map(([key, wallet]) => {
23
+ var _a, _b, _c;
24
+ const name = wallet.shortName || wallet.name;
25
+ const walletConnectorFallback = Boolean(wallet.walletConnect);
26
+ const id = (_c = (_b = (_a = wallet.injectedConfig) === null || _a === void 0 ? void 0 : _a[0].windowLocations) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : key;
27
+ return class extends injected.Injected {
28
+ constructor(props) {
29
+ super(name, id, Object.assign({ name, overrideKey: key, walletBookWallet: wallet, walletConnectorFallback }, props));
30
+ }
31
+ };
32
+ });
33
+ };
34
+
35
+ exports.fetchStarknetInjectedWalletConnectors = fetchStarknetInjectedWalletConnectors;