@layerswap/wallet-starknet 1.1.0 → 1.1.1

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.
@@ -21,6 +21,8 @@ import { ArgentMobileConnector } from "starknetkit/argentMobile";
21
21
  import { InjectedConnector } from "starknetkit/injected";
22
22
  // @ts-ignore
23
23
  import { WebWalletConnector } from "starknetkit/webwallet";
24
+ // @ts-ignore
25
+ import { ControllerConnector } from "starknetkit/controller";
24
26
  import useStarknetConnection, { resolveStarknetWallet } from "./useStarknetConnection";
25
27
  import { useStarknetStore } from "./starknetWalletStore";
26
28
  class DiscoveryConnector extends Connector {
@@ -105,6 +107,7 @@ const StarknetProvider = ({ children, walletConnectConfigs }) => {
105
107
  description: walletConnectConfig?.description || 'Move crypto across exchanges, blockchains, and wallets.',
106
108
  }
107
109
  }));
110
+ defaultConnectors.push(new ControllerConnector());
108
111
  defaultConnectors.push(new WebWalletConnector());
109
112
  return defaultConnectors;
110
113
  };
@@ -19,7 +19,7 @@ export class StarknetBalanceProvider extends BalanceProvider {
19
19
  const tokens = insertIfNotExists(network.tokens || [], network.token);
20
20
  for (const token of tokens) {
21
21
  try {
22
- const erc20 = new Contract(Erc20Abi, token.contract, provider);
22
+ const erc20 = new Contract({ abi: Erc20Abi, address: token.contract, providerOrAccount: provider });
23
23
  const balanceResult = await erc20.balanceOf(address);
24
24
  const balanceInWei = BigNumber.from(uint256.uint256ToBN(balanceResult.balance).toString()).toString();
25
25
  const balance = {
@@ -28,11 +28,11 @@ export class StarknetGasProvider {
28
28
  calldata: ["69420"],
29
29
  };
30
30
  const resp = await starknetWalletAccount.estimateInvokeFee([transferCall, watch], { skipValidate: true });
31
- if (!resp?.suggestedMaxFee) {
31
+ if (!resp?.overall_fee) {
32
32
  throw new Error(`Couldn't get fee estimation for the transfer. Response: ${JSON.stringify(resp)}`);
33
33
  }
34
34
  ;
35
- const feeInWei = resp.suggestedMaxFee.toString();
35
+ const feeInWei = resp.overall_fee.toString();
36
36
  const gas = Number(formatUnits(BigInt(feeInWei), network.token.decimals));
37
37
  return { gas, token: network.token };
38
38
  };
@@ -29,7 +29,7 @@ export class StarknetNftProvider {
29
29
  nodeUrl: network.node_url
30
30
  });
31
31
  try {
32
- const contract = new Contract(NFT_ABI, contractAddress, provider);
32
+ const contract = new Contract({ abi: NFT_ABI, address: contractAddress, providerOrAccount: provider });
33
33
  const response = await contract.balanceOf(address);
34
34
  if (!response || typeof response.balance === 'undefined') {
35
35
  throw new Error("Invalid response from NFT contract");
@@ -1,8 +1,8 @@
1
1
  import { useConnect, useDisconnect } from "@starknet-react/core";
2
- import { KnownInternalNames } from "@layerswap/widget/internal";
3
- import { resolveStarknetWalletConnectorIcon } from "./utils";
2
+ import { KnownInternalNames, walletIconResolver } from "@layerswap/widget/internal";
4
3
  import { useStarknetStore } from "./starknetWalletStore";
5
4
  import { useStarknetTransfer } from "./useStarknetTransfer";
5
+ import { resolveStarknetWalletIcon } from "./utils";
6
6
  const starknetNames = [KnownInternalNames.Networks.StarkNetGoerli, KnownInternalNames.Networks.StarkNetMainnet, KnownInternalNames.Networks.StarkNetSepolia];
7
7
  export default function useStarknetConnection({ networks }) {
8
8
  const commonSupportedNetworks = [
@@ -76,7 +76,7 @@ export default function useStarknetConnection({ networks }) {
76
76
  return {
77
77
  name: name,
78
78
  id: connector.id,
79
- icon: typeof connector.icon === 'string' ? connector.icon : (connector.icon.light.startsWith('data:') ? connector.icon.light : `data:image/svg+xml;base64,${btoa(connector.icon.light.replaceAll('currentColor', '#FFFFFF'))}`),
79
+ icon: resolveStarknetWalletIcon({ icon: connector.icon }),
80
80
  type: connector?.["_wallet"] ? 'injected' : 'other',
81
81
  installUrl: connector?.["_wallet"] ? undefined : connectorsConfigs.find(c => c.id === connector.id)?.installLink,
82
82
  };
@@ -108,7 +108,7 @@ export async function resolveStarknetWallet(props) {
108
108
  const walletChain = network?.chain_id;
109
109
  const { RpcProvider, WalletAccount } = await import('starknet');
110
110
  const rpcProvider = new RpcProvider({ nodeUrl: network?.node_url });
111
- const walletAccount = new WalletAccount(rpcProvider, connector.wallet, address);
111
+ const walletAccount = new WalletAccount({ provider: rpcProvider, walletProvider: connector.wallet, address });
112
112
  const accounts = await walletAccount.requestAccounts(true);
113
113
  const account = accounts?.[0];
114
114
  const wallet = {
@@ -117,7 +117,7 @@ export async function resolveStarknetWallet(props) {
117
117
  address: account,
118
118
  addresses: [account],
119
119
  chainId: walletChain || '',
120
- icon: resolveStarknetWalletConnectorIcon({ connector: connector.name, address: account }),
120
+ icon: walletIconResolver(address, resolveStarknetWalletIcon({ icon: connector.icon })),
121
121
  providerName: name,
122
122
  metadata: {
123
123
  starknetAccount: walletAccount,
@@ -1,3 +1,2 @@
1
1
  export * from "./starkNetAddressValidator";
2
- export * from "./KnownStarknetConnectors";
3
- export * from "./resolveIcon";
2
+ export * from "./resolveStarknetWalletIcon";
@@ -0,0 +1,3 @@
1
+ export const resolveStarknetWalletIcon = ({ icon }) => {
2
+ return typeof icon === 'string' ? icon : (icon.light.startsWith('data:') ? icon.light : `data:image/svg+xml;base64,${btoa(icon.light.replaceAll('currentColor', '#FFFFFF'))}`);
3
+ };