@dynamic-labs-sdk/starknet 0.14.0 → 0.16.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.
@@ -1,12 +1,12 @@
1
- import { WalletProviderPriority, assertDefined, createBaseNetworkProvider, createWalletProviderEventEmitter, formatWalletProviderGroupKey, formatWalletProviderKey, getCore, getDefaultClient, getNetworkProviderBuilderRegistry, getWalletProviderRegistry, hasExtension, registerExtension } from "@dynamic-labs-sdk/client/core";
1
+ import { WalletProviderPriority, assertDefined, createBaseNetworkProvider, createWalletProviderEventEmitter, formatWalletProviderGroupKey, formatWalletProviderKey, getCore, getDefaultClient, getNetworkProviderBuilderRegistry, getWalletProviderFromWalletAccount, getWalletProviderRegistry, hasExtension, parseAmountToSmallestUnit, registerExtension } from "@dynamic-labs-sdk/client/core";
2
2
  import starknetCore from "@starknet-io/get-starknet-core";
3
3
  import { Contract, RpcProvider, WalletAccount, cairo } from "starknet";
4
- import { assertWalletAccountSigningAvailability, getActiveNetworkData } from "@dynamic-labs-sdk/client";
4
+ import { BaseError, InvalidParamError, assertWalletAccountSigningAvailability, getActiveNetworkData } from "@dynamic-labs-sdk/client";
5
5
  import { WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
6
6
 
7
7
  //#region package.json
8
8
  var name = "@dynamic-labs-sdk/starknet";
9
- var version = "0.14.0";
9
+ var version = "0.16.1";
10
10
 
11
11
  //#endregion
12
12
  //#region src/utils/constants.ts
@@ -369,6 +369,60 @@ const formatStarknetTypedDataMessage = ({ inputMessage, chainId }) => {
369
369
  };
370
370
  };
371
371
 
372
+ //#endregion
373
+ //#region src/errors/NotStarknetProviderError/NotStarknetProviderError.ts
374
+ var NotStarknetProviderError = class extends BaseError {
375
+ providerKey;
376
+ constructor(params) {
377
+ super({
378
+ cause: null,
379
+ code: "not_starknet_provider_error",
380
+ docsUrl: null,
381
+ name: "NotStarknetProviderError",
382
+ shortMessage: "Provider is not a Starknet wallet provider"
383
+ });
384
+ this.providerKey = params.providerKey;
385
+ }
386
+ };
387
+
388
+ //#endregion
389
+ //#region src/isStarknetWalletProvider/isStarknetWalletProvider.ts
390
+ const isStarknetWalletProvider = (provider) => {
391
+ return provider.chain === "STARK";
392
+ };
393
+
394
+ //#endregion
395
+ //#region src/getStarknetAccount/getStarknetAccount.ts
396
+ const getStarknetAccount = async ({ walletAccount }, client = getDefaultClient()) => {
397
+ const provider = getWalletProviderFromWalletAccount({ walletAccount }, client);
398
+ if (!isStarknetWalletProvider(provider)) throw new NotStarknetProviderError({ providerKey: provider.key });
399
+ return provider.getStarknetAccount({ walletAccount });
400
+ };
401
+
402
+ //#endregion
403
+ //#region src/isStarknetWalletAccount/isStarknetWalletAccount.ts
404
+ const isStarknetWalletAccount = (walletAccount) => walletAccount.chain === "STARK";
405
+
406
+ //#endregion
407
+ //#region src/utils/starknetTransferAmount/starknetTransferAmount.ts
408
+ const STARKNET_ETH_DECIMALS = 18;
409
+ /**
410
+ * Transfers native ETH or a token on Starknet from one wallet to another.
411
+ *
412
+ * For native ETH, uses the Starknet ETH contract address with 18 decimals.
413
+ * For tokens, uses the provided token address and decimals.
414
+ */
415
+ const starknetTransferAmount = async ({ amount, recipient, token, walletAccount }, client) => {
416
+ if (!isStarknetWalletAccount(walletAccount)) throw new InvalidParamError("Wallet account is not a Starknet wallet account");
417
+ const { account } = await getStarknetAccount({ walletAccount }, client);
418
+ const contractAddress = token?.address || ETH_STARKNET_ADDRESS;
419
+ const smallestUnit = parseAmountToSmallestUnit({
420
+ amount,
421
+ decimals: token?.decimals ?? STARKNET_ETH_DECIMALS
422
+ });
423
+ return { transactionHash: (await new Contract(ETH_CONTRACT_ABI, contractAddress, account).invoke("transfer", [recipient, cairo.uint256(smallestUnit)])).transaction_hash };
424
+ };
425
+
372
426
  //#endregion
373
427
  //#region src/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.ts
374
428
  const createWalletProviderFromStarknetWallet = ({ dynamicClient, starknetWindowProvider }) => {
@@ -396,7 +450,7 @@ const createWalletProviderFromStarknetWallet = ({ dynamicClient, starknetWindowP
396
450
  type: "wallet_requestAccounts"
397
451
  }) };
398
452
  };
399
- const getStarknetAccount = async ({ walletAccount }) => {
453
+ const getStarknetAccount$1 = async ({ walletAccount }) => {
400
454
  await assertWalletAccountSigningAvailability({ walletAccount }, dynamicClient);
401
455
  const { networkData } = await getActiveNetworkData({ walletAccount }, dynamicClient);
402
456
  assertDefined(networkData, "No active network data found");
@@ -463,7 +517,7 @@ const createWalletProviderFromStarknetWallet = ({ dynamicClient, starknetWindowP
463
517
  },
464
518
  getActiveNetworkId,
465
519
  getConnectedAddresses,
466
- getStarknetAccount,
520
+ getStarknetAccount: getStarknetAccount$1,
467
521
  groupKey: formatWalletProviderGroupKey(starknetWindowProvider.name),
468
522
  key,
469
523
  metadata: {
@@ -473,6 +527,7 @@ const createWalletProviderFromStarknetWallet = ({ dynamicClient, starknetWindowP
473
527
  signMessage,
474
528
  switchActiveNetwork,
475
529
  terminate,
530
+ transferAmount: (args) => starknetTransferAmount(args, dynamicClient),
476
531
  walletProviderType
477
532
  };
478
533
  };
@@ -509,5 +564,5 @@ const addStarknetInjectedWalletsExtension = (client = getDefaultClient()) => {
509
564
  };
510
565
 
511
566
  //#endregion
512
- export { name as a, WEI_PER_ETH as i, ETH_CONTRACT_ABI as n, version as o, ETH_STARKNET_ADDRESS as r, addStarknetInjectedWalletsExtension as t };
513
- //# sourceMappingURL=addStarknetInjectedWalletsExtension-CmrBNT9J.esm.js.map
567
+ export { ETH_CONTRACT_ABI as a, name as c, NotStarknetProviderError as i, version as l, isStarknetWalletAccount as n, ETH_STARKNET_ADDRESS as o, getStarknetAccount as r, WEI_PER_ETH as s, addStarknetInjectedWalletsExtension as t };
568
+ //# sourceMappingURL=addStarknetInjectedWalletsExtension-BFeceZTP.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addStarknetInjectedWalletsExtension-BFeceZTP.esm.js","names":["ETH_CONTRACT_ABI: Abi","message: Record<string, unknown>","connect: StarknetWalletProvider['connect']","disconnect: StarknetWalletProvider['disconnect']","getActiveNetworkId: StarknetWalletProvider['getActiveNetworkId']","getConnectedAddresses: StarknetWalletProvider['getConnectedAddresses']","getStarknetAccount: StarknetWalletProvider['getStarknetAccount']","signMessage: StarknetWalletProvider['signMessage']","switchActiveNetwork: StarknetWalletProvider['switchActiveNetwork']","terminate: StarknetWalletProvider['terminate']"],"sources":["../package.json","../src/utils/constants.ts","../src/utils/fetchStarknetBalance/fetchStarknetBalance.ts","../src/utils/createStarknetNetworkProvider/createStarknetNetworkProvider.ts","../src/registerStarknetNetworkProviderBuilder/registerStarknetNetworkProviderBuilder.ts","../src/utils/formatStarknetTypedDataMessage/formatStarknetTypedDataMessage.ts","../src/errors/NotStarknetProviderError/NotStarknetProviderError.ts","../src/isStarknetWalletProvider/isStarknetWalletProvider.ts","../src/getStarknetAccount/getStarknetAccount.ts","../src/isStarknetWalletAccount/isStarknetWalletAccount.ts","../src/utils/starknetTransferAmount/starknetTransferAmount.ts","../src/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.ts","../src/injected/addStarknetInjectedWalletsExtension/addStarknetInjectedWalletsExtension.ts"],"sourcesContent":["","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\n\nimport type { Abi } from 'starknet';\n\n// Starknet uses ETH as its native token: 1 ETH = 10^18 wei.\nexport const WEI_PER_ETH = 1e18;\n\nexport const ETH_STARKNET_ADDRESS =\n '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7';\n\nexport const ETH_CONTRACT_ABI: Abi = [\n {\n members: [\n {\n name: 'low',\n offset: 0,\n type: 'felt',\n },\n {\n name: 'high',\n offset: 1,\n type: 'felt',\n },\n ],\n name: 'Uint256',\n size: 2,\n type: 'struct',\n },\n {\n data: [\n {\n name: 'from_',\n type: 'felt',\n },\n {\n name: 'to',\n type: 'felt',\n },\n {\n name: 'value',\n type: 'Uint256',\n },\n ],\n keys: [],\n name: 'Transfer',\n type: 'event',\n },\n {\n data: [\n {\n name: 'owner',\n type: 'felt',\n },\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'value',\n type: 'Uint256',\n },\n ],\n keys: [],\n name: 'Approval',\n type: 'event',\n },\n {\n inputs: [],\n name: 'name',\n outputs: [\n {\n name: 'name',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'symbol',\n outputs: [\n {\n name: 'symbol',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n name: 'totalSupply',\n type: 'Uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'decimals',\n outputs: [\n {\n name: 'decimals',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'felt',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n name: 'balance',\n type: 'Uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'felt',\n },\n {\n name: 'spender',\n type: 'felt',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n name: 'remaining',\n type: 'Uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'permittedMinter',\n outputs: [\n {\n name: 'minter',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'initialized',\n outputs: [\n {\n name: 'res',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'get_version',\n outputs: [\n {\n name: 'version',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'get_identity',\n outputs: [\n {\n name: 'identity',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'init_vector_len',\n type: 'felt',\n },\n {\n name: 'init_vector',\n type: 'felt*',\n },\n ],\n name: 'initialize',\n outputs: [],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'recipient',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'sender',\n type: 'felt',\n },\n {\n name: 'recipient',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'added_value',\n type: 'Uint256',\n },\n ],\n name: 'increaseAllowance',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'subtracted_value',\n type: 'Uint256',\n },\n ],\n name: 'decreaseAllowance',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'recipient',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'permissionedMint',\n outputs: [],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'permissionedBurn',\n outputs: [],\n type: 'function',\n },\n];\n","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\nimport type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { Contract, RpcProvider, cairo } from 'starknet';\n\nimport {\n ETH_CONTRACT_ABI,\n ETH_STARKNET_ADDRESS,\n WEI_PER_ETH,\n} from '../constants';\n\ntype FetchStarknetBalanceParams = {\n address: string;\n networkData: NetworkData;\n};\n\nexport const fetchStarknetBalance = async ({\n address,\n networkData,\n}: FetchStarknetBalanceParams): Promise<string | null> => {\n const provider = new RpcProvider({\n nodeUrl: networkData.rpcUrls.http[0],\n });\n\n const contract = new Contract(\n ETH_CONTRACT_ABI,\n ETH_STARKNET_ADDRESS,\n provider\n );\n\n const { balance } = await contract.balanceOf(address);\n\n return (Number(cairo.uint256(balance.low).low) / WEI_PER_ETH).toFixed(6);\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { StarknetNetworkProvider } from '../../StarknetNetworkProvider.types';\nimport { fetchStarknetBalance } from '../fetchStarknetBalance';\n\nexport const createStarknetNetworkProvider = (\n networkData: NetworkData\n): StarknetNetworkProvider => ({\n ...createBaseNetworkProvider('STARK', networkData),\n getBalance: async ({ address }) => ({\n balance: await fetchStarknetBalance({\n address,\n networkData,\n }),\n }),\n});\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createStarknetNetworkProvider } from '../utils/createStarknetNetworkProvider';\n\nexport const registerStarknetNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n // If the Starknet network provider builder is already registered, return.\n if (networkProviderBuilderRegistry.get().get('STARK')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: createStarknetNetworkProvider,\n chain: 'STARK',\n });\n};\n","import type { TypedData, constants } from 'starknet';\n\nconst defaultTypedData = {\n primaryType: 'Message',\n types: {\n Message: [\n {\n name: 'message',\n type: 'felt',\n },\n ],\n StarkNetDomain: [\n {\n name: 'name',\n type: 'felt',\n },\n {\n name: 'chainId',\n type: 'felt',\n },\n {\n name: 'version',\n type: 'felt',\n },\n ],\n },\n};\n\ntype FormatStarknetTypedDataMessageParams = {\n chainId: constants.StarknetChainId;\n inputMessage: string;\n};\n\nexport const formatStarknetTypedDataMessage = ({\n inputMessage,\n chainId,\n}: FormatStarknetTypedDataMessageParams): TypedData => {\n let nonce, domain;\n try {\n const { nonce: parsedNonce, domain: parsedDomain } =\n JSON.parse(inputMessage);\n nonce = parsedNonce;\n domain = parsedDomain;\n } catch {\n nonce = inputMessage;\n domain = 'domain';\n }\n\n // Starknet strings could be at most 31 chars long\n const message: Record<string, unknown> = {\n message: nonce.substring(0, 31),\n };\n\n return {\n ...defaultTypedData,\n domain: {\n chainId,\n name: domain.substring(0, 31),\n version: '0.0.1',\n },\n message,\n };\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotStarknetProviderError extends BaseError {\n public readonly providerKey: string;\n\n constructor(params: { providerKey: string }) {\n super({\n cause: null,\n code: 'not_starknet_provider_error',\n docsUrl: null,\n name: 'NotStarknetProviderError',\n shortMessage: 'Provider is not a Starknet wallet provider',\n });\n\n this.providerKey = params.providerKey;\n }\n}\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { StarknetWalletProvider } from '../StarknetWalletProvider.types';\n\nexport const isStarknetWalletProvider = (\n provider: WalletProvider | StarknetWalletProvider\n): provider is StarknetWalletProvider => {\n return provider.chain === 'STARK';\n};\n","import {\n getDefaultClient,\n getWalletProviderFromWalletAccount,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { NotStarknetProviderError } from '../errors/NotStarknetProviderError';\nimport { isStarknetWalletProvider } from '../isStarknetWalletProvider';\nimport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\ntype GetStarknetAccountParams = {\n walletAccount: StarknetWalletAccount;\n};\n\nexport const getStarknetAccount = async (\n { walletAccount }: GetStarknetAccountParams,\n client = getDefaultClient()\n) => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isStarknetWalletProvider(provider)) {\n throw new NotStarknetProviderError({ providerKey: provider.key });\n }\n\n return provider.getStarknetAccount({ walletAccount });\n};\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\nexport const isStarknetWalletAccount = (\n walletAccount: WalletAccount\n): walletAccount is StarknetWalletAccount => walletAccount.chain === 'STARK';\n","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\nimport type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { InvalidParamError } from '@dynamic-labs-sdk/client';\nimport {\n type TransferAmountParams,\n parseAmountToSmallestUnit,\n} from '@dynamic-labs-sdk/client/core';\nimport { Contract, cairo } from 'starknet';\n\nimport { getStarknetAccount } from '../../getStarknetAccount';\nimport { isStarknetWalletAccount } from '../../isStarknetWalletAccount';\nimport { ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS } from '../constants';\n\nconst STARKNET_ETH_DECIMALS = 18;\n\n/**\n * Transfers native ETH or a token on Starknet from one wallet to another.\n *\n * For native ETH, uses the Starknet ETH contract address with 18 decimals.\n * For tokens, uses the provided token address and decimals.\n */\nexport const starknetTransferAmount = async (\n { amount, recipient, token, walletAccount }: TransferAmountParams,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n if (!isStarknetWalletAccount(walletAccount)) {\n throw new InvalidParamError(\n 'Wallet account is not a Starknet wallet account'\n );\n }\n\n const { account } = await getStarknetAccount({ walletAccount }, client);\n\n const contractAddress = token?.address || ETH_STARKNET_ADDRESS;\n const decimals = token?.decimals ?? STARKNET_ETH_DECIMALS;\n\n const smallestUnit = parseAmountToSmallestUnit({ amount, decimals });\n\n const contract = new Contract(ETH_CONTRACT_ABI, contractAddress, account);\n\n const result = await contract.invoke('transfer', [\n recipient,\n cairo.uint256(smallestUnit),\n ]);\n\n return { transactionHash: result.transaction_hash };\n};\n","import {\n type DynamicClient,\n assertWalletAccountSigningAvailability,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport type { StarknetWindowObject } from '@starknet-io/get-starknet-core';\nimport starknetCore from '@starknet-io/get-starknet-core';\nimport { RpcProvider, WalletAccount, type constants } from 'starknet';\n\nimport type { StarknetWalletProvider } from '../../../StarknetWalletProvider.types';\nimport { formatStarknetTypedDataMessage } from '../../../utils/formatStarknetTypedDataMessage';\nimport { starknetTransferAmount } from '../../../utils/starknetTransferAmount';\n\ntype CreateWalletProviderFromStarknetWalletParams = {\n dynamicClient: DynamicClient;\n starknetWindowProvider: StarknetWindowObject;\n};\n\nexport const createWalletProviderFromStarknetWallet = ({\n dynamicClient,\n starknetWindowProvider,\n}: CreateWalletProviderFromStarknetWalletParams): StarknetWalletProvider => {\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain: 'STARK',\n displayName: starknetWindowProvider.name,\n walletProviderType,\n });\n\n const connect: StarknetWalletProvider['connect'] = async () => {\n const accounts = await starknetWindowProvider.request({\n type: 'wallet_requestAccounts',\n });\n\n return {\n addresses: accounts.map((address) => ({\n address,\n })),\n };\n };\n\n const disconnect: StarknetWalletProvider['disconnect'] = async () => {\n try {\n await starknetWindowProvider.request({\n type: 'wallet_disconnect',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any);\n } catch {\n // Do nothing, wallet is missing `wallet_disconnect` method\n }\n await starknetCore.disconnect();\n };\n\n const getActiveNetworkId: StarknetWalletProvider['getActiveNetworkId'] =\n async () => {\n const chainId = await starknetWindowProvider.request({\n type: 'wallet_requestChainId',\n });\n\n return {\n networkId: chainId,\n };\n };\n\n const getConnectedAddresses: StarknetWalletProvider['getConnectedAddresses'] =\n async () => {\n const accounts = await starknetWindowProvider.request({\n params: {\n silent_mode: true,\n },\n type: 'wallet_requestAccounts',\n });\n\n return {\n addresses: accounts,\n };\n };\n\n const getStarknetAccount: StarknetWalletProvider['getStarknetAccount'] =\n async ({ walletAccount }) => {\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n\n assertDefined(networkData, 'No active network data found');\n\n const rpcProvider = new RpcProvider({\n nodeUrl: networkData.rpcUrls.http[0],\n });\n\n const account = await WalletAccount.connectSilent(\n rpcProvider,\n starknetWindowProvider\n );\n\n return { account };\n };\n\n const signMessage: StarknetWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account not found');\n\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const { networkId } = await getActiveNetworkId();\n\n const encodedMessage = formatStarknetTypedDataMessage({\n chainId: networkId as constants.StarknetChainId,\n inputMessage: message,\n });\n\n const signature = await starknetWindowProvider.request({\n params: encodedMessage,\n type: 'wallet_signTypedData',\n });\n\n return { signature: signature.join(',') };\n };\n\n const switchActiveNetwork: StarknetWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n await starknetWindowProvider.request({\n params: {\n chainId: networkId,\n },\n type: 'wallet_switchStarknetChain',\n });\n };\n\n const { getEventEmitter, cleanupEventEmitter } =\n createWalletProviderEventEmitter<{\n removeAccountChangeListener: VoidFunction;\n removeNetworkChangeListener: VoidFunction;\n }>({\n removeEventListeners: ({ setupReturnValue }) => {\n assertDefined(setupReturnValue, 'Setup return value not defined');\n\n setupReturnValue.removeNetworkChangeListener();\n setupReturnValue.removeAccountChangeListener();\n },\n\n setupEventListeners: ({\n handleAccountsChanged,\n handleNetworkChanged,\n }) => {\n const onAccountsChanged = (accounts: string[] | undefined) => {\n handleAccountsChanged({\n addresses: accounts ?? [],\n });\n };\n starknetWindowProvider.on('accountsChanged', onAccountsChanged);\n const removeAccountChangeListener = () => {\n starknetWindowProvider.off('accountsChanged', onAccountsChanged);\n };\n\n const onNetworkChanged = (network: string | undefined) => {\n if (!network) {\n return;\n }\n\n handleNetworkChanged({\n networkId: network.toString(),\n });\n };\n starknetWindowProvider.on('networkChanged', onNetworkChanged);\n const removeNetworkChangeListener = () => {\n starknetWindowProvider.off('networkChanged', onNetworkChanged);\n };\n\n return {\n removeAccountChangeListener,\n removeNetworkChangeListener,\n };\n },\n\n supportedEvents: ['accountsChanged', 'networkChanged'],\n });\n\n const terminate: StarknetWalletProvider['terminate'] = async () => {\n cleanupEventEmitter();\n };\n\n const walletProvider: StarknetWalletProvider = {\n chain: 'STARK',\n connect,\n disconnect,\n get events() {\n return getEventEmitter();\n },\n getActiveNetworkId,\n getConnectedAddresses,\n getStarknetAccount,\n groupKey: formatWalletProviderGroupKey(starknetWindowProvider.name),\n key,\n metadata: {\n displayName: starknetWindowProvider.name,\n icon:\n typeof starknetWindowProvider.icon === 'string'\n ? starknetWindowProvider.icon\n : starknetWindowProvider.icon.light,\n },\n signMessage,\n switchActiveNetwork,\n terminate,\n transferAmount: (args) => starknetTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n\n return walletProvider;\n};\n","import {\n WalletProviderPriority,\n getCore,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport starknetCore from '@starknet-io/get-starknet-core';\n\nimport { registerStarknetNetworkProviderBuilder } from '../../registerStarknetNetworkProviderBuilder';\nimport { createWalletProviderFromStarknetWallet } from '../utils/createWalletProviderFromStarknetWallet';\n\nexport const STARKNET_INJECTED_WALLETS_EXTENSION_KEY =\n 'starknetInjectedWallets';\n\n/**\n * Adds the Starknet Injected Wallets extension to the Dynamic client.\n *\n * This extension enables integration with many Starknet wallets, like Braavos, Ready and Xverse.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\nexport const addStarknetInjectedWalletsExtension = (\n client = getDefaultClient()\n): void => {\n if (\n hasExtension(\n { extensionKey: STARKNET_INJECTED_WALLETS_EXTENSION_KEY },\n client\n )\n ) {\n return;\n }\n\n registerExtension(\n { extensionKey: STARKNET_INJECTED_WALLETS_EXTENSION_KEY },\n client\n );\n\n registerStarknetNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n starknetCore\n .getAvailableWallets()\n .then((starknetWindowProviders) => {\n starknetWindowProviders.forEach((starknetWindowProvider) => {\n const walletProvider = createWalletProviderFromStarknetWallet({\n dynamicClient: client,\n starknetWindowProvider,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n })\n .catch((error) => {\n getCore(client).logger.error(\n 'Error getting available starknet wallets',\n error\n );\n });\n};\n"],"mappings":";;;;;;;;;;;;ACKA,MAAa,cAAc;AAE3B,MAAa,uBACX;AAEF,MAAaA,mBAAwB;CACnC;EACE,SAAS,CACP;GACE,MAAM;GACN,QAAQ;GACR,MAAM;GACP,EACD;GACE,MAAM;GACN,QAAQ;GACR,MAAM;GACP,CACF;EACD,MAAM;EACN,MAAM;EACN,MAAM;EACP;CACD;EACE,MAAM;GACJ;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACF;EACD,MAAM,EAAE;EACR,MAAM;EACN,MAAM;EACP;CACD;EACE,MAAM;GACJ;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACF;EACD,MAAM,EAAE;EACR,MAAM;EACN,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,EAAE;EACX,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD;EACE,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GA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"}
@@ -34,7 +34,7 @@ let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
34
34
 
35
35
  //#region package.json
36
36
  var name = "@dynamic-labs-sdk/starknet";
37
- var version = "0.14.0";
37
+ var version = "0.16.1";
38
38
 
39
39
  //#endregion
40
40
  //#region src/utils/constants.ts
@@ -397,6 +397,60 @@ const formatStarknetTypedDataMessage = ({ inputMessage, chainId }) => {
397
397
  };
398
398
  };
399
399
 
400
+ //#endregion
401
+ //#region src/errors/NotStarknetProviderError/NotStarknetProviderError.ts
402
+ var NotStarknetProviderError = class extends _dynamic_labs_sdk_client.BaseError {
403
+ providerKey;
404
+ constructor(params) {
405
+ super({
406
+ cause: null,
407
+ code: "not_starknet_provider_error",
408
+ docsUrl: null,
409
+ name: "NotStarknetProviderError",
410
+ shortMessage: "Provider is not a Starknet wallet provider"
411
+ });
412
+ this.providerKey = params.providerKey;
413
+ }
414
+ };
415
+
416
+ //#endregion
417
+ //#region src/isStarknetWalletProvider/isStarknetWalletProvider.ts
418
+ const isStarknetWalletProvider = (provider) => {
419
+ return provider.chain === "STARK";
420
+ };
421
+
422
+ //#endregion
423
+ //#region src/getStarknetAccount/getStarknetAccount.ts
424
+ const getStarknetAccount = async ({ walletAccount }, client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
425
+ const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
426
+ if (!isStarknetWalletProvider(provider)) throw new NotStarknetProviderError({ providerKey: provider.key });
427
+ return provider.getStarknetAccount({ walletAccount });
428
+ };
429
+
430
+ //#endregion
431
+ //#region src/isStarknetWalletAccount/isStarknetWalletAccount.ts
432
+ const isStarknetWalletAccount = (walletAccount) => walletAccount.chain === "STARK";
433
+
434
+ //#endregion
435
+ //#region src/utils/starknetTransferAmount/starknetTransferAmount.ts
436
+ const STARKNET_ETH_DECIMALS = 18;
437
+ /**
438
+ * Transfers native ETH or a token on Starknet from one wallet to another.
439
+ *
440
+ * For native ETH, uses the Starknet ETH contract address with 18 decimals.
441
+ * For tokens, uses the provided token address and decimals.
442
+ */
443
+ const starknetTransferAmount = async ({ amount, recipient, token, walletAccount }, client) => {
444
+ if (!isStarknetWalletAccount(walletAccount)) throw new _dynamic_labs_sdk_client.InvalidParamError("Wallet account is not a Starknet wallet account");
445
+ const { account } = await getStarknetAccount({ walletAccount }, client);
446
+ const contractAddress = token?.address || ETH_STARKNET_ADDRESS;
447
+ const smallestUnit = (0, _dynamic_labs_sdk_client_core.parseAmountToSmallestUnit)({
448
+ amount,
449
+ decimals: token?.decimals ?? STARKNET_ETH_DECIMALS
450
+ });
451
+ return { transactionHash: (await new starknet.Contract(ETH_CONTRACT_ABI, contractAddress, account).invoke("transfer", [recipient, starknet.cairo.uint256(smallestUnit)])).transaction_hash };
452
+ };
453
+
400
454
  //#endregion
401
455
  //#region src/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.ts
402
456
  const createWalletProviderFromStarknetWallet = ({ dynamicClient, starknetWindowProvider }) => {
@@ -424,7 +478,7 @@ const createWalletProviderFromStarknetWallet = ({ dynamicClient, starknetWindowP
424
478
  type: "wallet_requestAccounts"
425
479
  }) };
426
480
  };
427
- const getStarknetAccount = async ({ walletAccount }) => {
481
+ const getStarknetAccount$1 = async ({ walletAccount }) => {
428
482
  await (0, _dynamic_labs_sdk_client.assertWalletAccountSigningAvailability)({ walletAccount }, dynamicClient);
429
483
  const { networkData } = await (0, _dynamic_labs_sdk_client.getActiveNetworkData)({ walletAccount }, dynamicClient);
430
484
  (0, _dynamic_labs_sdk_client_core.assertDefined)(networkData, "No active network data found");
@@ -491,7 +545,7 @@ const createWalletProviderFromStarknetWallet = ({ dynamicClient, starknetWindowP
491
545
  },
492
546
  getActiveNetworkId,
493
547
  getConnectedAddresses,
494
- getStarknetAccount,
548
+ getStarknetAccount: getStarknetAccount$1,
495
549
  groupKey: (0, _dynamic_labs_sdk_client_core.formatWalletProviderGroupKey)(starknetWindowProvider.name),
496
550
  key,
497
551
  metadata: {
@@ -501,6 +555,7 @@ const createWalletProviderFromStarknetWallet = ({ dynamicClient, starknetWindowP
501
555
  signMessage,
502
556
  switchActiveNetwork,
503
557
  terminate,
558
+ transferAmount: (args) => starknetTransferAmount(args, dynamicClient),
504
559
  walletProviderType
505
560
  };
506
561
  };
@@ -549,6 +604,12 @@ Object.defineProperty(exports, 'ETH_STARKNET_ADDRESS', {
549
604
  return ETH_STARKNET_ADDRESS;
550
605
  }
551
606
  });
607
+ Object.defineProperty(exports, 'NotStarknetProviderError', {
608
+ enumerable: true,
609
+ get: function () {
610
+ return NotStarknetProviderError;
611
+ }
612
+ });
552
613
  Object.defineProperty(exports, 'WEI_PER_ETH', {
553
614
  enumerable: true,
554
615
  get: function () {
@@ -567,6 +628,18 @@ Object.defineProperty(exports, 'addStarknetInjectedWalletsExtension', {
567
628
  return addStarknetInjectedWalletsExtension;
568
629
  }
569
630
  });
631
+ Object.defineProperty(exports, 'getStarknetAccount', {
632
+ enumerable: true,
633
+ get: function () {
634
+ return getStarknetAccount;
635
+ }
636
+ });
637
+ Object.defineProperty(exports, 'isStarknetWalletAccount', {
638
+ enumerable: true,
639
+ get: function () {
640
+ return isStarknetWalletAccount;
641
+ }
642
+ });
570
643
  Object.defineProperty(exports, 'name', {
571
644
  enumerable: true,
572
645
  get: function () {
@@ -579,4 +652,4 @@ Object.defineProperty(exports, 'version', {
579
652
  return version;
580
653
  }
581
654
  });
582
- //# sourceMappingURL=addStarknetInjectedWalletsExtension-DChhWExd.cjs.js.map
655
+ //# sourceMappingURL=addStarknetInjectedWalletsExtension-BwqsnRUQ.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addStarknetInjectedWalletsExtension-BwqsnRUQ.cjs.js","names":["ETH_CONTRACT_ABI: Abi","Contract","RpcProvider","cairo","message: Record<string, unknown>","BaseError","InvalidParamError","Contract","cairo","WalletProviderEnum","connect: StarknetWalletProvider['connect']","disconnect: StarknetWalletProvider['disconnect']","starknetCore","getActiveNetworkId: StarknetWalletProvider['getActiveNetworkId']","getConnectedAddresses: StarknetWalletProvider['getConnectedAddresses']","getStarknetAccount: StarknetWalletProvider['getStarknetAccount']","RpcProvider","WalletAccount","signMessage: StarknetWalletProvider['signMessage']","switchActiveNetwork: StarknetWalletProvider['switchActiveNetwork']","terminate: StarknetWalletProvider['terminate']","WalletProviderPriority"],"sources":["../package.json","../src/utils/constants.ts","../src/utils/fetchStarknetBalance/fetchStarknetBalance.ts","../src/utils/createStarknetNetworkProvider/createStarknetNetworkProvider.ts","../src/registerStarknetNetworkProviderBuilder/registerStarknetNetworkProviderBuilder.ts","../src/utils/formatStarknetTypedDataMessage/formatStarknetTypedDataMessage.ts","../src/errors/NotStarknetProviderError/NotStarknetProviderError.ts","../src/isStarknetWalletProvider/isStarknetWalletProvider.ts","../src/getStarknetAccount/getStarknetAccount.ts","../src/isStarknetWalletAccount/isStarknetWalletAccount.ts","../src/utils/starknetTransferAmount/starknetTransferAmount.ts","../src/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.ts","../src/injected/addStarknetInjectedWalletsExtension/addStarknetInjectedWalletsExtension.ts"],"sourcesContent":["","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\n\nimport type { Abi } from 'starknet';\n\n// Starknet uses ETH as its native token: 1 ETH = 10^18 wei.\nexport const WEI_PER_ETH = 1e18;\n\nexport const ETH_STARKNET_ADDRESS =\n '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7';\n\nexport const ETH_CONTRACT_ABI: Abi = [\n {\n members: [\n {\n name: 'low',\n offset: 0,\n type: 'felt',\n },\n {\n name: 'high',\n offset: 1,\n type: 'felt',\n },\n ],\n name: 'Uint256',\n size: 2,\n type: 'struct',\n },\n {\n data: [\n {\n name: 'from_',\n type: 'felt',\n },\n {\n name: 'to',\n type: 'felt',\n },\n {\n name: 'value',\n type: 'Uint256',\n },\n ],\n keys: [],\n name: 'Transfer',\n type: 'event',\n },\n {\n data: [\n {\n name: 'owner',\n type: 'felt',\n },\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'value',\n type: 'Uint256',\n },\n ],\n keys: [],\n name: 'Approval',\n type: 'event',\n },\n {\n inputs: [],\n name: 'name',\n outputs: [\n {\n name: 'name',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'symbol',\n outputs: [\n {\n name: 'symbol',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n name: 'totalSupply',\n type: 'Uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'decimals',\n outputs: [\n {\n name: 'decimals',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'felt',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n name: 'balance',\n type: 'Uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'felt',\n },\n {\n name: 'spender',\n type: 'felt',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n name: 'remaining',\n type: 'Uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'permittedMinter',\n outputs: [\n {\n name: 'minter',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'initialized',\n outputs: [\n {\n name: 'res',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'get_version',\n outputs: [\n {\n name: 'version',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'get_identity',\n outputs: [\n {\n name: 'identity',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'init_vector_len',\n type: 'felt',\n },\n {\n name: 'init_vector',\n type: 'felt*',\n },\n ],\n name: 'initialize',\n outputs: [],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'recipient',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'sender',\n type: 'felt',\n },\n {\n name: 'recipient',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'added_value',\n type: 'Uint256',\n },\n ],\n name: 'increaseAllowance',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'subtracted_value',\n type: 'Uint256',\n },\n ],\n name: 'decreaseAllowance',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'recipient',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'permissionedMint',\n outputs: [],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'permissionedBurn',\n outputs: [],\n type: 'function',\n },\n];\n","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\nimport type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { Contract, RpcProvider, cairo } from 'starknet';\n\nimport {\n ETH_CONTRACT_ABI,\n ETH_STARKNET_ADDRESS,\n WEI_PER_ETH,\n} from '../constants';\n\ntype FetchStarknetBalanceParams = {\n address: string;\n networkData: NetworkData;\n};\n\nexport const fetchStarknetBalance = async ({\n address,\n networkData,\n}: FetchStarknetBalanceParams): Promise<string | null> => {\n const provider = new RpcProvider({\n nodeUrl: networkData.rpcUrls.http[0],\n });\n\n const contract = new Contract(\n ETH_CONTRACT_ABI,\n ETH_STARKNET_ADDRESS,\n provider\n );\n\n const { balance } = await contract.balanceOf(address);\n\n return (Number(cairo.uint256(balance.low).low) / WEI_PER_ETH).toFixed(6);\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { StarknetNetworkProvider } from '../../StarknetNetworkProvider.types';\nimport { fetchStarknetBalance } from '../fetchStarknetBalance';\n\nexport const createStarknetNetworkProvider = (\n networkData: NetworkData\n): StarknetNetworkProvider => ({\n ...createBaseNetworkProvider('STARK', networkData),\n getBalance: async ({ address }) => ({\n balance: await fetchStarknetBalance({\n address,\n networkData,\n }),\n }),\n});\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createStarknetNetworkProvider } from '../utils/createStarknetNetworkProvider';\n\nexport const registerStarknetNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n // If the Starknet network provider builder is already registered, return.\n if (networkProviderBuilderRegistry.get().get('STARK')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: createStarknetNetworkProvider,\n chain: 'STARK',\n });\n};\n","import type { TypedData, constants } from 'starknet';\n\nconst defaultTypedData = {\n primaryType: 'Message',\n types: {\n Message: [\n {\n name: 'message',\n type: 'felt',\n },\n ],\n StarkNetDomain: [\n {\n name: 'name',\n type: 'felt',\n },\n {\n name: 'chainId',\n type: 'felt',\n },\n {\n name: 'version',\n type: 'felt',\n },\n ],\n },\n};\n\ntype FormatStarknetTypedDataMessageParams = {\n chainId: constants.StarknetChainId;\n inputMessage: string;\n};\n\nexport const formatStarknetTypedDataMessage = ({\n inputMessage,\n chainId,\n}: FormatStarknetTypedDataMessageParams): TypedData => {\n let nonce, domain;\n try {\n const { nonce: parsedNonce, domain: parsedDomain } =\n JSON.parse(inputMessage);\n nonce = parsedNonce;\n domain = parsedDomain;\n } catch {\n nonce = inputMessage;\n domain = 'domain';\n }\n\n // Starknet strings could be at most 31 chars long\n const message: Record<string, unknown> = {\n message: nonce.substring(0, 31),\n };\n\n return {\n ...defaultTypedData,\n domain: {\n chainId,\n name: domain.substring(0, 31),\n version: '0.0.1',\n },\n message,\n };\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotStarknetProviderError extends BaseError {\n public readonly providerKey: string;\n\n constructor(params: { providerKey: string }) {\n super({\n cause: null,\n code: 'not_starknet_provider_error',\n docsUrl: null,\n name: 'NotStarknetProviderError',\n shortMessage: 'Provider is not a Starknet wallet provider',\n });\n\n this.providerKey = params.providerKey;\n }\n}\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { StarknetWalletProvider } from '../StarknetWalletProvider.types';\n\nexport const isStarknetWalletProvider = (\n provider: WalletProvider | StarknetWalletProvider\n): provider is StarknetWalletProvider => {\n return provider.chain === 'STARK';\n};\n","import {\n getDefaultClient,\n getWalletProviderFromWalletAccount,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { NotStarknetProviderError } from '../errors/NotStarknetProviderError';\nimport { isStarknetWalletProvider } from '../isStarknetWalletProvider';\nimport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\ntype GetStarknetAccountParams = {\n walletAccount: StarknetWalletAccount;\n};\n\nexport const getStarknetAccount = async (\n { walletAccount }: GetStarknetAccountParams,\n client = getDefaultClient()\n) => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isStarknetWalletProvider(provider)) {\n throw new NotStarknetProviderError({ providerKey: provider.key });\n }\n\n return provider.getStarknetAccount({ walletAccount });\n};\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\nexport const isStarknetWalletAccount = (\n walletAccount: WalletAccount\n): walletAccount is StarknetWalletAccount => walletAccount.chain === 'STARK';\n","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\nimport type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { InvalidParamError } from '@dynamic-labs-sdk/client';\nimport {\n type TransferAmountParams,\n parseAmountToSmallestUnit,\n} from '@dynamic-labs-sdk/client/core';\nimport { Contract, cairo } from 'starknet';\n\nimport { getStarknetAccount } from '../../getStarknetAccount';\nimport { isStarknetWalletAccount } from '../../isStarknetWalletAccount';\nimport { ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS } from '../constants';\n\nconst STARKNET_ETH_DECIMALS = 18;\n\n/**\n * Transfers native ETH or a token on Starknet from one wallet to another.\n *\n * For native ETH, uses the Starknet ETH contract address with 18 decimals.\n * For tokens, uses the provided token address and decimals.\n */\nexport const starknetTransferAmount = async (\n { amount, recipient, token, walletAccount }: TransferAmountParams,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n if (!isStarknetWalletAccount(walletAccount)) {\n throw new InvalidParamError(\n 'Wallet account is not a Starknet wallet account'\n );\n }\n\n const { account } = await getStarknetAccount({ walletAccount }, client);\n\n const contractAddress = token?.address || ETH_STARKNET_ADDRESS;\n const decimals = token?.decimals ?? STARKNET_ETH_DECIMALS;\n\n const smallestUnit = parseAmountToSmallestUnit({ amount, decimals });\n\n const contract = new Contract(ETH_CONTRACT_ABI, contractAddress, account);\n\n const result = await contract.invoke('transfer', [\n recipient,\n cairo.uint256(smallestUnit),\n ]);\n\n return { transactionHash: result.transaction_hash };\n};\n","import {\n type DynamicClient,\n assertWalletAccountSigningAvailability,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport type { StarknetWindowObject } from '@starknet-io/get-starknet-core';\nimport starknetCore from '@starknet-io/get-starknet-core';\nimport { RpcProvider, WalletAccount, type constants } from 'starknet';\n\nimport type { StarknetWalletProvider } from '../../../StarknetWalletProvider.types';\nimport { formatStarknetTypedDataMessage } from '../../../utils/formatStarknetTypedDataMessage';\nimport { starknetTransferAmount } from '../../../utils/starknetTransferAmount';\n\ntype CreateWalletProviderFromStarknetWalletParams = {\n dynamicClient: DynamicClient;\n starknetWindowProvider: StarknetWindowObject;\n};\n\nexport const createWalletProviderFromStarknetWallet = ({\n dynamicClient,\n starknetWindowProvider,\n}: CreateWalletProviderFromStarknetWalletParams): StarknetWalletProvider => {\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain: 'STARK',\n displayName: starknetWindowProvider.name,\n walletProviderType,\n });\n\n const connect: StarknetWalletProvider['connect'] = async () => {\n const accounts = await starknetWindowProvider.request({\n type: 'wallet_requestAccounts',\n });\n\n return {\n addresses: accounts.map((address) => ({\n address,\n })),\n };\n };\n\n const disconnect: StarknetWalletProvider['disconnect'] = async () => {\n try {\n await starknetWindowProvider.request({\n type: 'wallet_disconnect',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any);\n } catch {\n // Do nothing, wallet is missing `wallet_disconnect` method\n }\n await starknetCore.disconnect();\n };\n\n const getActiveNetworkId: StarknetWalletProvider['getActiveNetworkId'] =\n async () => {\n const chainId = await starknetWindowProvider.request({\n type: 'wallet_requestChainId',\n });\n\n return {\n networkId: chainId,\n };\n };\n\n const getConnectedAddresses: StarknetWalletProvider['getConnectedAddresses'] =\n async () => {\n const accounts = await starknetWindowProvider.request({\n params: {\n silent_mode: true,\n },\n type: 'wallet_requestAccounts',\n });\n\n return {\n addresses: accounts,\n };\n };\n\n const getStarknetAccount: StarknetWalletProvider['getStarknetAccount'] =\n async ({ walletAccount }) => {\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n\n assertDefined(networkData, 'No active network data found');\n\n const rpcProvider = new RpcProvider({\n nodeUrl: networkData.rpcUrls.http[0],\n });\n\n const account = await WalletAccount.connectSilent(\n rpcProvider,\n starknetWindowProvider\n );\n\n return { account };\n };\n\n const signMessage: StarknetWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account not found');\n\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const { networkId } = await getActiveNetworkId();\n\n const encodedMessage = formatStarknetTypedDataMessage({\n chainId: networkId as constants.StarknetChainId,\n inputMessage: message,\n });\n\n const signature = await starknetWindowProvider.request({\n params: encodedMessage,\n type: 'wallet_signTypedData',\n });\n\n return { signature: signature.join(',') };\n };\n\n const switchActiveNetwork: StarknetWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n await starknetWindowProvider.request({\n params: {\n chainId: networkId,\n },\n type: 'wallet_switchStarknetChain',\n });\n };\n\n const { getEventEmitter, cleanupEventEmitter } =\n createWalletProviderEventEmitter<{\n removeAccountChangeListener: VoidFunction;\n removeNetworkChangeListener: VoidFunction;\n }>({\n removeEventListeners: ({ setupReturnValue }) => {\n assertDefined(setupReturnValue, 'Setup return value not defined');\n\n setupReturnValue.removeNetworkChangeListener();\n setupReturnValue.removeAccountChangeListener();\n },\n\n setupEventListeners: ({\n handleAccountsChanged,\n handleNetworkChanged,\n }) => {\n const onAccountsChanged = (accounts: string[] | undefined) => {\n handleAccountsChanged({\n addresses: accounts ?? [],\n });\n };\n starknetWindowProvider.on('accountsChanged', onAccountsChanged);\n const removeAccountChangeListener = () => {\n starknetWindowProvider.off('accountsChanged', onAccountsChanged);\n };\n\n const onNetworkChanged = (network: string | undefined) => {\n if (!network) {\n return;\n }\n\n handleNetworkChanged({\n networkId: network.toString(),\n });\n };\n starknetWindowProvider.on('networkChanged', onNetworkChanged);\n const removeNetworkChangeListener = () => {\n starknetWindowProvider.off('networkChanged', onNetworkChanged);\n };\n\n return {\n removeAccountChangeListener,\n removeNetworkChangeListener,\n };\n },\n\n supportedEvents: ['accountsChanged', 'networkChanged'],\n });\n\n const terminate: StarknetWalletProvider['terminate'] = async () => {\n cleanupEventEmitter();\n };\n\n const walletProvider: StarknetWalletProvider = {\n chain: 'STARK',\n connect,\n disconnect,\n get events() {\n return getEventEmitter();\n },\n getActiveNetworkId,\n getConnectedAddresses,\n getStarknetAccount,\n groupKey: formatWalletProviderGroupKey(starknetWindowProvider.name),\n key,\n metadata: {\n displayName: starknetWindowProvider.name,\n icon:\n typeof starknetWindowProvider.icon === 'string'\n ? starknetWindowProvider.icon\n : starknetWindowProvider.icon.light,\n },\n signMessage,\n switchActiveNetwork,\n terminate,\n transferAmount: (args) => starknetTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n\n return walletProvider;\n};\n","import {\n WalletProviderPriority,\n getCore,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport starknetCore from '@starknet-io/get-starknet-core';\n\nimport { registerStarknetNetworkProviderBuilder } from '../../registerStarknetNetworkProviderBuilder';\nimport { createWalletProviderFromStarknetWallet } from '../utils/createWalletProviderFromStarknetWallet';\n\nexport const STARKNET_INJECTED_WALLETS_EXTENSION_KEY =\n 'starknetInjectedWallets';\n\n/**\n * Adds the Starknet Injected Wallets extension to the Dynamic client.\n *\n * This extension enables integration with many Starknet wallets, like Braavos, Ready and Xverse.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\nexport const addStarknetInjectedWalletsExtension = (\n client = getDefaultClient()\n): void => {\n if (\n hasExtension(\n { extensionKey: STARKNET_INJECTED_WALLETS_EXTENSION_KEY },\n client\n )\n ) {\n return;\n }\n\n registerExtension(\n { extensionKey: STARKNET_INJECTED_WALLETS_EXTENSION_KEY },\n client\n );\n\n registerStarknetNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n starknetCore\n .getAvailableWallets()\n .then((starknetWindowProviders) => {\n starknetWindowProviders.forEach((starknetWindowProvider) => {\n const walletProvider = createWalletProviderFromStarknetWallet({\n dynamicClient: client,\n starknetWindowProvider,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n })\n .catch((error) => {\n getCore(client).logger.error(\n 'Error getting available starknet wallets',\n error\n );\n });\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACKA,MAAa,cAAc;AAE3B,MAAa,uBACX;AAEF,MAAaA,mBAAwB;CACnC;EACE,SAAS,CACP;GACE,MAAM;GACN,QAAQ;GACR,MAAM;GACP,EACD;GACE,MAAM;GACN,QAAQ;GACR,MAAM;GACP,CACF;EACD,MAAM;EACN,MAAM;EACN,MAAM;EACP;CACD;EACE,MAAM;GACJ;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACF;EACD,MAAM,EAAE;EACR,MAAM;EACN,MAAM;EACP;CACD;EACE,MAAM;GACJ;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACF;EACD,MAAM,EAAE;EACR,MAAM;EACN,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,EAAE;EACX,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD;EACE,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD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"}
package/dist/index.cjs.js CHANGED
@@ -1,7 +1,6 @@
1
- const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-DChhWExd.cjs.js');
1
+ const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-BwqsnRUQ.cjs.js');
2
2
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
3
3
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
4
- let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
5
4
 
6
5
  //#region src/addStarknetExtension/addStarknetExtension.ts
7
6
  /**
@@ -16,44 +15,10 @@ const addStarknetExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefa
16
15
  require_addStarknetInjectedWalletsExtension.addStarknetInjectedWalletsExtension(client);
17
16
  };
18
17
 
19
- //#endregion
20
- //#region src/errors/NotStarknetProviderError/NotStarknetProviderError.ts
21
- var NotStarknetProviderError = class extends _dynamic_labs_sdk_client.BaseError {
22
- providerKey;
23
- constructor(params) {
24
- super({
25
- cause: null,
26
- code: "not_starknet_provider_error",
27
- docsUrl: null,
28
- name: "NotStarknetProviderError",
29
- shortMessage: "Provider is not a Starknet wallet provider"
30
- });
31
- this.providerKey = params.providerKey;
32
- }
33
- };
34
-
35
- //#endregion
36
- //#region src/isStarknetWalletProvider/isStarknetWalletProvider.ts
37
- const isStarknetWalletProvider = (provider) => {
38
- return provider.chain === "STARK";
39
- };
40
-
41
- //#endregion
42
- //#region src/getStarknetAccount/getStarknetAccount.ts
43
- const getStarknetAccount = async ({ walletAccount }, client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
44
- const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
45
- if (!isStarknetWalletProvider(provider)) throw new NotStarknetProviderError({ providerKey: provider.key });
46
- return provider.getStarknetAccount({ walletAccount });
47
- };
48
-
49
18
  //#endregion
50
19
  //#region src/isStarknetNetworkProvider/isStarknetNetworkProvider.ts
51
20
  const isStarknetNetworkProvider = (networkProvider) => networkProvider.chain === "STARK";
52
21
 
53
- //#endregion
54
- //#region src/isStarknetWalletAccount/isStarknetWalletAccount.ts
55
- const isStarknetWalletAccount = (walletAccount) => walletAccount.chain === "STARK";
56
-
57
22
  //#endregion
58
23
  //#region src/exports/index.ts
59
24
  (0, _dynamic_labs_sdk_assert_package_version.assertPackageVersion)(require_addStarknetInjectedWalletsExtension.name, require_addStarknetInjectedWalletsExtension.version);
@@ -61,10 +26,10 @@ const isStarknetWalletAccount = (walletAccount) => walletAccount.chain === "STAR
61
26
  //#endregion
62
27
  exports.ETH_CONTRACT_ABI = require_addStarknetInjectedWalletsExtension.ETH_CONTRACT_ABI;
63
28
  exports.ETH_STARKNET_ADDRESS = require_addStarknetInjectedWalletsExtension.ETH_STARKNET_ADDRESS;
64
- exports.NotStarknetProviderError = NotStarknetProviderError;
29
+ exports.NotStarknetProviderError = require_addStarknetInjectedWalletsExtension.NotStarknetProviderError;
65
30
  exports.WEI_PER_ETH = require_addStarknetInjectedWalletsExtension.WEI_PER_ETH;
66
31
  exports.addStarknetExtension = addStarknetExtension;
67
- exports.getStarknetAccount = getStarknetAccount;
32
+ exports.getStarknetAccount = require_addStarknetInjectedWalletsExtension.getStarknetAccount;
68
33
  exports.isStarknetNetworkProvider = isStarknetNetworkProvider;
69
- exports.isStarknetWalletAccount = isStarknetWalletAccount;
34
+ exports.isStarknetWalletAccount = require_addStarknetInjectedWalletsExtension.isStarknetWalletAccount;
70
35
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","names":["BaseError","packageName","packageVersion"],"sources":["../src/addStarknetExtension/addStarknetExtension.ts","../src/errors/NotStarknetProviderError/NotStarknetProviderError.ts","../src/isStarknetWalletProvider/isStarknetWalletProvider.ts","../src/getStarknetAccount/getStarknetAccount.ts","../src/isStarknetNetworkProvider/isStarknetNetworkProvider.ts","../src/isStarknetWalletAccount/isStarknetWalletAccount.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addStarknetInjectedWalletsExtension } from '../injected/addStarknetInjectedWalletsExtension';\n\n/**\n * Adds the Starknet extension to the Dynamic client.\n *\n * This is a convenience function that adds support for a variety of Starknet wallets,\n * like Braavos, Ready and more.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\n\nexport const addStarknetExtension = (client = getDefaultClient()): void => {\n addStarknetInjectedWalletsExtension(client);\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotStarknetProviderError extends BaseError {\n public readonly providerKey: string;\n\n constructor(params: { providerKey: string }) {\n super({\n cause: null,\n code: 'not_starknet_provider_error',\n docsUrl: null,\n name: 'NotStarknetProviderError',\n shortMessage: 'Provider is not a Starknet wallet provider',\n });\n\n this.providerKey = params.providerKey;\n }\n}\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { StarknetWalletProvider } from '../StarknetWalletProvider.types';\n\nexport const isStarknetWalletProvider = (\n provider: WalletProvider | StarknetWalletProvider\n): provider is StarknetWalletProvider => {\n return provider.chain === 'STARK';\n};\n","import {\n getDefaultClient,\n getWalletProviderFromWalletAccount,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { NotStarknetProviderError } from '../errors/NotStarknetProviderError';\nimport { isStarknetWalletProvider } from '../isStarknetWalletProvider';\nimport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\ntype GetStarknetAccountParams = {\n walletAccount: StarknetWalletAccount;\n};\n\nexport const getStarknetAccount = async (\n { walletAccount }: GetStarknetAccountParams,\n client = getDefaultClient()\n) => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isStarknetWalletProvider(provider)) {\n throw new NotStarknetProviderError({ providerKey: provider.key });\n }\n\n return provider.getStarknetAccount({ walletAccount });\n};\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { StarknetNetworkProvider } from '../StarknetNetworkProvider.types';\n\nexport const isStarknetNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is StarknetNetworkProvider => networkProvider.chain === 'STARK';\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\nexport const isStarknetWalletAccount = (\n walletAccount: WalletAccount\n): walletAccount is StarknetWalletAccount => walletAccount.chain === 'STARK';\n","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\nimport { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addStarknetExtension } from '../addStarknetExtension';\nexport { NotStarknetProviderError } from '../errors/NotStarknetProviderError';\nexport { getStarknetAccount } from '../getStarknetAccount';\nexport { isStarknetNetworkProvider } from '../isStarknetNetworkProvider';\nexport { isStarknetWalletAccount } from '../isStarknetWalletAccount';\nexport type { StarknetNetworkProvider } from '../StarknetNetworkProvider.types';\nexport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\nexport {\n ETH_CONTRACT_ABI,\n ETH_STARKNET_ADDRESS,\n WEI_PER_ETH,\n} from '../utils/constants';\n"],"mappings":";;;;;;;;;;;;;;AAaA,MAAa,wBAAwB,8DAA2B,KAAW;AACzE,iFAAoC,OAAO;;;;;ACZ7C,IAAa,2BAAb,cAA8CA,mCAAU;CACtD,AAAgB;CAEhB,YAAY,QAAiC;AAC3C,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc;GACf,CAAC;AAEF,OAAK,cAAc,OAAO;;;;;;ACV9B,MAAa,4BACX,aACuC;AACvC,QAAO,SAAS,UAAU;;;;;ACM5B,MAAa,qBAAqB,OAChC,EAAE,iBACF,8DAA2B,KACxB;CACH,MAAM,iFACJ,EAAE,eAAe,EACjB,OACD;AAED,KAAI,CAAC,yBAAyB,SAAS,CACrC,OAAM,IAAI,yBAAyB,EAAE,aAAa,SAAS,KAAK,CAAC;AAGnE,QAAO,SAAS,mBAAmB,EAAE,eAAe,CAAC;;;;;ACtBvD,MAAa,6BACX,oBAC+C,gBAAgB,UAAU;;;;ACF3E,MAAa,2BACX,kBAC2C,cAAc,UAAU;;;;mECChDC,kDAAaC,oDAAe"}
1
+ {"version":3,"file":"index.cjs.js","names":["packageName","packageVersion"],"sources":["../src/addStarknetExtension/addStarknetExtension.ts","../src/isStarknetNetworkProvider/isStarknetNetworkProvider.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addStarknetInjectedWalletsExtension } from '../injected/addStarknetInjectedWalletsExtension';\n\n/**\n * Adds the Starknet extension to the Dynamic client.\n *\n * This is a convenience function that adds support for a variety of Starknet wallets,\n * like Braavos, Ready and more.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\n\nexport const addStarknetExtension = (client = getDefaultClient()): void => {\n addStarknetInjectedWalletsExtension(client);\n};\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { StarknetNetworkProvider } from '../StarknetNetworkProvider.types';\n\nexport const isStarknetNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is StarknetNetworkProvider => networkProvider.chain === 'STARK';\n","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\nimport { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addStarknetExtension } from '../addStarknetExtension';\nexport { NotStarknetProviderError } from '../errors/NotStarknetProviderError';\nexport { getStarknetAccount } from '../getStarknetAccount';\nexport { isStarknetNetworkProvider } from '../isStarknetNetworkProvider';\nexport { isStarknetWalletAccount } from '../isStarknetWalletAccount';\nexport type { StarknetNetworkProvider } from '../StarknetNetworkProvider.types';\nexport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\nexport {\n ETH_CONTRACT_ABI,\n ETH_STARKNET_ADDRESS,\n WEI_PER_ETH,\n} from '../utils/constants';\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAa,wBAAwB,8DAA2B,KAAW;AACzE,iFAAoC,OAAO;;;;;ACV7C,MAAa,6BACX,oBAC+C,gBAAgB,UAAU;;;;mECCtDA,kDAAaC,oDAAe"}
package/dist/index.esm.js CHANGED
@@ -1,7 +1,6 @@
1
- import { a as name, i as WEI_PER_ETH, n as ETH_CONTRACT_ABI, o as version, r as ETH_STARKNET_ADDRESS, t as addStarknetInjectedWalletsExtension } from "./addStarknetInjectedWalletsExtension-CmrBNT9J.esm.js";
1
+ import { a as ETH_CONTRACT_ABI, c as name, i as NotStarknetProviderError, l as version, n as isStarknetWalletAccount, o as ETH_STARKNET_ADDRESS, r as getStarknetAccount, s as WEI_PER_ETH, t as addStarknetInjectedWalletsExtension } from "./addStarknetInjectedWalletsExtension-BFeceZTP.esm.js";
2
2
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
3
- import { getDefaultClient, getWalletProviderFromWalletAccount } from "@dynamic-labs-sdk/client/core";
4
- import { BaseError } from "@dynamic-labs-sdk/client";
3
+ import { getDefaultClient } from "@dynamic-labs-sdk/client/core";
5
4
 
6
5
  //#region src/addStarknetExtension/addStarknetExtension.ts
7
6
  /**
@@ -16,44 +15,10 @@ const addStarknetExtension = (client = getDefaultClient()) => {
16
15
  addStarknetInjectedWalletsExtension(client);
17
16
  };
18
17
 
19
- //#endregion
20
- //#region src/errors/NotStarknetProviderError/NotStarknetProviderError.ts
21
- var NotStarknetProviderError = class extends BaseError {
22
- providerKey;
23
- constructor(params) {
24
- super({
25
- cause: null,
26
- code: "not_starknet_provider_error",
27
- docsUrl: null,
28
- name: "NotStarknetProviderError",
29
- shortMessage: "Provider is not a Starknet wallet provider"
30
- });
31
- this.providerKey = params.providerKey;
32
- }
33
- };
34
-
35
- //#endregion
36
- //#region src/isStarknetWalletProvider/isStarknetWalletProvider.ts
37
- const isStarknetWalletProvider = (provider) => {
38
- return provider.chain === "STARK";
39
- };
40
-
41
- //#endregion
42
- //#region src/getStarknetAccount/getStarknetAccount.ts
43
- const getStarknetAccount = async ({ walletAccount }, client = getDefaultClient()) => {
44
- const provider = getWalletProviderFromWalletAccount({ walletAccount }, client);
45
- if (!isStarknetWalletProvider(provider)) throw new NotStarknetProviderError({ providerKey: provider.key });
46
- return provider.getStarknetAccount({ walletAccount });
47
- };
48
-
49
18
  //#endregion
50
19
  //#region src/isStarknetNetworkProvider/isStarknetNetworkProvider.ts
51
20
  const isStarknetNetworkProvider = (networkProvider) => networkProvider.chain === "STARK";
52
21
 
53
- //#endregion
54
- //#region src/isStarknetWalletAccount/isStarknetWalletAccount.ts
55
- const isStarknetWalletAccount = (walletAccount) => walletAccount.chain === "STARK";
56
-
57
22
  //#endregion
58
23
  //#region src/exports/index.ts
59
24
  assertPackageVersion(name, version);
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","names":["packageName","packageVersion"],"sources":["../src/addStarknetExtension/addStarknetExtension.ts","../src/errors/NotStarknetProviderError/NotStarknetProviderError.ts","../src/isStarknetWalletProvider/isStarknetWalletProvider.ts","../src/getStarknetAccount/getStarknetAccount.ts","../src/isStarknetNetworkProvider/isStarknetNetworkProvider.ts","../src/isStarknetWalletAccount/isStarknetWalletAccount.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addStarknetInjectedWalletsExtension } from '../injected/addStarknetInjectedWalletsExtension';\n\n/**\n * Adds the Starknet extension to the Dynamic client.\n *\n * This is a convenience function that adds support for a variety of Starknet wallets,\n * like Braavos, Ready and more.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\n\nexport const addStarknetExtension = (client = getDefaultClient()): void => {\n addStarknetInjectedWalletsExtension(client);\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotStarknetProviderError extends BaseError {\n public readonly providerKey: string;\n\n constructor(params: { providerKey: string }) {\n super({\n cause: null,\n code: 'not_starknet_provider_error',\n docsUrl: null,\n name: 'NotStarknetProviderError',\n shortMessage: 'Provider is not a Starknet wallet provider',\n });\n\n this.providerKey = params.providerKey;\n }\n}\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { StarknetWalletProvider } from '../StarknetWalletProvider.types';\n\nexport const isStarknetWalletProvider = (\n provider: WalletProvider | StarknetWalletProvider\n): provider is StarknetWalletProvider => {\n return provider.chain === 'STARK';\n};\n","import {\n getDefaultClient,\n getWalletProviderFromWalletAccount,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { NotStarknetProviderError } from '../errors/NotStarknetProviderError';\nimport { isStarknetWalletProvider } from '../isStarknetWalletProvider';\nimport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\ntype GetStarknetAccountParams = {\n walletAccount: StarknetWalletAccount;\n};\n\nexport const getStarknetAccount = async (\n { walletAccount }: GetStarknetAccountParams,\n client = getDefaultClient()\n) => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isStarknetWalletProvider(provider)) {\n throw new NotStarknetProviderError({ providerKey: provider.key });\n }\n\n return provider.getStarknetAccount({ walletAccount });\n};\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { StarknetNetworkProvider } from '../StarknetNetworkProvider.types';\n\nexport const isStarknetNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is StarknetNetworkProvider => networkProvider.chain === 'STARK';\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\nexport const isStarknetWalletAccount = (\n walletAccount: WalletAccount\n): walletAccount is StarknetWalletAccount => walletAccount.chain === 'STARK';\n","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\nimport { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addStarknetExtension } from '../addStarknetExtension';\nexport { NotStarknetProviderError } from '../errors/NotStarknetProviderError';\nexport { getStarknetAccount } from '../getStarknetAccount';\nexport { isStarknetNetworkProvider } from '../isStarknetNetworkProvider';\nexport { isStarknetWalletAccount } from '../isStarknetWalletAccount';\nexport type { StarknetNetworkProvider } from '../StarknetNetworkProvider.types';\nexport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\nexport {\n ETH_CONTRACT_ABI,\n ETH_STARKNET_ADDRESS,\n WEI_PER_ETH,\n} from '../utils/constants';\n"],"mappings":";;;;;;;;;;;;;;AAaA,MAAa,wBAAwB,SAAS,kBAAkB,KAAW;AACzE,qCAAoC,OAAO;;;;;ACZ7C,IAAa,2BAAb,cAA8C,UAAU;CACtD,AAAgB;CAEhB,YAAY,QAAiC;AAC3C,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc;GACf,CAAC;AAEF,OAAK,cAAc,OAAO;;;;;;ACV9B,MAAa,4BACX,aACuC;AACvC,QAAO,SAAS,UAAU;;;;;ACM5B,MAAa,qBAAqB,OAChC,EAAE,iBACF,SAAS,kBAAkB,KACxB;CACH,MAAM,WAAW,mCACf,EAAE,eAAe,EACjB,OACD;AAED,KAAI,CAAC,yBAAyB,SAAS,CACrC,OAAM,IAAI,yBAAyB,EAAE,aAAa,SAAS,KAAK,CAAC;AAGnE,QAAO,SAAS,mBAAmB,EAAE,eAAe,CAAC;;;;;ACtBvD,MAAa,6BACX,oBAC+C,gBAAgB,UAAU;;;;ACF3E,MAAa,2BACX,kBAC2C,cAAc,UAAU;;;;ACCrE,qBAAqBA,MAAaC,QAAe"}
1
+ {"version":3,"file":"index.esm.js","names":["packageName","packageVersion"],"sources":["../src/addStarknetExtension/addStarknetExtension.ts","../src/isStarknetNetworkProvider/isStarknetNetworkProvider.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addStarknetInjectedWalletsExtension } from '../injected/addStarknetInjectedWalletsExtension';\n\n/**\n * Adds the Starknet extension to the Dynamic client.\n *\n * This is a convenience function that adds support for a variety of Starknet wallets,\n * like Braavos, Ready and more.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\n\nexport const addStarknetExtension = (client = getDefaultClient()): void => {\n addStarknetInjectedWalletsExtension(client);\n};\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { StarknetNetworkProvider } from '../StarknetNetworkProvider.types';\n\nexport const isStarknetNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is StarknetNetworkProvider => networkProvider.chain === 'STARK';\n","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\nimport { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addStarknetExtension } from '../addStarknetExtension';\nexport { NotStarknetProviderError } from '../errors/NotStarknetProviderError';\nexport { getStarknetAccount } from '../getStarknetAccount';\nexport { isStarknetNetworkProvider } from '../isStarknetNetworkProvider';\nexport { isStarknetWalletAccount } from '../isStarknetWalletAccount';\nexport type { StarknetNetworkProvider } from '../StarknetNetworkProvider.types';\nexport type { StarknetWalletAccount } from '../StarknetWalletAccount.types';\n\nexport {\n ETH_CONTRACT_ABI,\n ETH_STARKNET_ADDRESS,\n WEI_PER_ETH,\n} from '../utils/constants';\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAa,wBAAwB,SAAS,kBAAkB,KAAW;AACzE,qCAAoC,OAAO;;;;;ACV7C,MAAa,6BACX,oBAC+C,gBAAgB,UAAU;;;;ACC3E,qBAAqBA,MAAaC,QAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"createWalletProviderFromStarknetWallet.d.ts","sourceRoot":"","sources":["../../../../src/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,0BAA0B,CAAC;AAQlC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAI3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAGpF,KAAK,4CAA4C,GAAG;IAClD,aAAa,EAAE,aAAa,CAAC;IAC7B,sBAAsB,EAAE,oBAAoB,CAAC;CAC9C,CAAC;AAEF,eAAO,MAAM,sCAAsC,+CAGhD,4CAA4C,KAAG,sBAyMjD,CAAC"}
1
+ {"version":3,"file":"createWalletProviderFromStarknetWallet.d.ts","sourceRoot":"","sources":["../../../../src/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,0BAA0B,CAAC;AAQlC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAI3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAIpF,KAAK,4CAA4C,GAAG;IAClD,aAAa,EAAE,aAAa,CAAC;IAC7B,sBAAsB,EAAE,oBAAoB,CAAC;CAC9C,CAAC;AAEF,eAAO,MAAM,sCAAsC,+CAGhD,4CAA4C,KAAG,sBA0MjD,CAAC"}
@@ -1,4 +1,4 @@
1
- const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-DChhWExd.cjs.js');
1
+ const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-BwqsnRUQ.cjs.js');
2
2
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
3
3
 
4
4
  //#region src/exports/injected.ts
@@ -1,4 +1,4 @@
1
- import { a as name, o as version, t as addStarknetInjectedWalletsExtension } from "./addStarknetInjectedWalletsExtension-CmrBNT9J.esm.js";
1
+ import { c as name, l as version, t as addStarknetInjectedWalletsExtension } from "./addStarknetInjectedWalletsExtension-BFeceZTP.esm.js";
2
2
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
3
3
 
4
4
  //#region src/exports/injected.ts