@dynamic-labs-sdk/starknet 1.17.1 → 1.19.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.
@@ -4,8 +4,17 @@
4
4
  * This is a convenience function that adds support for a variety of Starknet wallets,
5
5
  * like Braavos, Ready and more.
6
6
  *
7
+ * @example
8
+ * ```ts
9
+ * const client = createDynamicClient({ environmentId: 'env-123' });
10
+ * addStarknetExtension(client);
11
+ * ```
12
+ *
7
13
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
8
- * @notInstrumented
14
+ * @returns void
15
+ * @see isStarknetWalletAccount
16
+ * @see isStarknetNetworkProvider
17
+ * @notInstrumented
9
18
  */
10
19
  export declare const addStarknetExtension: (client?: import("@dynamic-labs-sdk/client").DynamicClient) => void;
11
20
  //# sourceMappingURL=addStarknetExtension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"addStarknetExtension.d.ts","sourceRoot":"","sources":["../../src/addStarknetExtension/addStarknetExtension.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,eAAO,MAAM,oBAAoB,iEAAkC,IAElE,CAAC"}
1
+ {"version":3,"file":"addStarknetExtension.d.ts","sourceRoot":"","sources":["../../src/addStarknetExtension/addStarknetExtension.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,oBAAoB,iEAAkC,IAElE,CAAC"}
@@ -6,7 +6,7 @@ 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 = "1.17.1";
9
+ var version = "1.19.0";
10
10
 
11
11
  //#endregion
12
12
  //#region src/utils/constants.ts
@@ -398,7 +398,22 @@ const isStarknetWalletProvider = (provider) => {
398
398
 
399
399
  //#endregion
400
400
  //#region src/getStarknetAccount/getStarknetAccount.ts
401
- /** @notInstrumented */
401
+ /**
402
+ * Retrieves a Starknet account from a wallet account.
403
+ *
404
+ * @example
405
+ * ```ts
406
+ * const account = await getStarknetAccount({ walletAccount: starknetAccount });
407
+ * ```
408
+ *
409
+ * @param params.walletAccount - The wallet account to get the Starknet account for.
410
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
411
+ * @returns A promise that resolves to a Starknet account instance.
412
+ * @throws {NotStarknetProviderError} If the wallet account's provider is not a Starknet provider.
413
+ * @see isStarknetWalletAccount
414
+ * @see addStarknetExtension
415
+ * @notInstrumented
416
+ */
402
417
  const getStarknetAccount = async ({ walletAccount }, client = getDefaultClient()) => {
403
418
  const provider = getWalletProviderFromWalletAccount({ walletAccount }, client);
404
419
  if (!isStarknetWalletProvider(provider)) throw new NotStarknetProviderError({ providerKey: provider.key });
@@ -407,7 +422,21 @@ const getStarknetAccount = async ({ walletAccount }, client = getDefaultClient()
407
422
 
408
423
  //#endregion
409
424
  //#region src/isStarknetWalletAccount/isStarknetWalletAccount.ts
410
- /** @notInstrumented */
425
+ /**
426
+ * Type guard function to check if a wallet account is a Starknet wallet account.
427
+ *
428
+ * @example
429
+ * ```ts
430
+ * const accounts = getWalletAccounts();
431
+ * const starknetAccounts = accounts.filter(isStarknetWalletAccount);
432
+ * ```
433
+ *
434
+ * @param walletAccount - The wallet account to check.
435
+ * @returns True if the wallet account is a Starknet wallet account, false otherwise.
436
+ * @see isStarknetNetworkProvider
437
+ * @see addStarknetExtension
438
+ * @notInstrumented
439
+ */
411
440
  const isStarknetWalletAccount = (walletAccount) => walletAccount.chain === "STARK";
412
441
 
413
442
  //#endregion
@@ -576,4 +605,4 @@ const addStarknetInjectedWalletsExtension = (client = getDefaultClient()) => {
576
605
 
577
606
  //#endregion
578
607
  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 };
579
- //# sourceMappingURL=addStarknetInjectedWalletsExtension-B5iHHn7G.esm.js.map
608
+ //# sourceMappingURL=addStarknetInjectedWalletsExtension-5WMSYa9z.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addStarknetInjectedWalletsExtension-5WMSYa9z.esm.js","names":["ETH_CONTRACT_ABI: Abi","message: Record<string, unknown>","connect: StarknetWalletProvider['connect']","getActiveNetworkId: StarknetWalletProvider['getActiveNetworkId']","getConnectedAddresses: StarknetWalletProvider['getConnectedAddresses']","getStarknetAccount: StarknetWalletProvider['getStarknetAccount']","signMessage: StarknetWalletProvider['signMessage']","switchActiveNetwork: StarknetWalletProvider['switchActiveNetwork']","destroy: StarknetWalletProvider['destroy']"],"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\n/** @notInstrumented */\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\n/** @notInstrumented */\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\n/** @notInstrumented */\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\n/** @notInstrumented */\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\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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\n/**\n * Retrieves a Starknet account from a wallet account.\n *\n * @example\n * ```ts\n * const account = await getStarknetAccount({ walletAccount: starknetAccount });\n * ```\n *\n * @param params.walletAccount - The wallet account to get the Starknet account for.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to a Starknet account instance.\n * @throws {NotStarknetProviderError} If the wallet account's provider is not a Starknet provider.\n * @see isStarknetWalletAccount\n * @see addStarknetExtension\n * @notInstrumented\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\n/**\n * Type guard function to check if a wallet account is a Starknet wallet account.\n *\n * @example\n * ```ts\n * const accounts = getWalletAccounts();\n * const starknetAccounts = accounts.filter(isStarknetWalletAccount);\n * ```\n *\n * @param walletAccount - The wallet account to check.\n * @returns True if the wallet account is a Starknet wallet account, false otherwise.\n * @see isStarknetNetworkProvider\n * @see addStarknetExtension\n * @notInstrumented\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 * @notInstrumented\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 getCore,\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\n/** @notInstrumented */\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 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 // eslint-disable-next-line custom-rules/require-single-object-param\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 // eslint-disable-next-line custom-rules/require-single-object-param\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 destroy: StarknetWalletProvider['destroy'] = async () => {\n cleanupEventEmitter();\n try {\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 } catch (err) {\n getCore(dynamicClient).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n const walletProvider: StarknetWalletProvider = {\n chain: 'STARK',\n connect,\n destroy,\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 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 * @notInstrumented\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 = "1.17.1";
37
+ var version = "1.19.0";
38
38
 
39
39
  //#endregion
40
40
  //#region src/utils/constants.ts
@@ -426,7 +426,22 @@ const isStarknetWalletProvider = (provider) => {
426
426
 
427
427
  //#endregion
428
428
  //#region src/getStarknetAccount/getStarknetAccount.ts
429
- /** @notInstrumented */
429
+ /**
430
+ * Retrieves a Starknet account from a wallet account.
431
+ *
432
+ * @example
433
+ * ```ts
434
+ * const account = await getStarknetAccount({ walletAccount: starknetAccount });
435
+ * ```
436
+ *
437
+ * @param params.walletAccount - The wallet account to get the Starknet account for.
438
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
439
+ * @returns A promise that resolves to a Starknet account instance.
440
+ * @throws {NotStarknetProviderError} If the wallet account's provider is not a Starknet provider.
441
+ * @see isStarknetWalletAccount
442
+ * @see addStarknetExtension
443
+ * @notInstrumented
444
+ */
430
445
  const getStarknetAccount = async ({ walletAccount }, client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
431
446
  const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
432
447
  if (!isStarknetWalletProvider(provider)) throw new NotStarknetProviderError({ providerKey: provider.key });
@@ -435,7 +450,21 @@ const getStarknetAccount = async ({ walletAccount }, client = (0, _dynamic_labs_
435
450
 
436
451
  //#endregion
437
452
  //#region src/isStarknetWalletAccount/isStarknetWalletAccount.ts
438
- /** @notInstrumented */
453
+ /**
454
+ * Type guard function to check if a wallet account is a Starknet wallet account.
455
+ *
456
+ * @example
457
+ * ```ts
458
+ * const accounts = getWalletAccounts();
459
+ * const starknetAccounts = accounts.filter(isStarknetWalletAccount);
460
+ * ```
461
+ *
462
+ * @param walletAccount - The wallet account to check.
463
+ * @returns True if the wallet account is a Starknet wallet account, false otherwise.
464
+ * @see isStarknetNetworkProvider
465
+ * @see addStarknetExtension
466
+ * @notInstrumented
467
+ */
439
468
  const isStarknetWalletAccount = (walletAccount) => walletAccount.chain === "STARK";
440
469
 
441
470
  //#endregion
@@ -663,4 +692,4 @@ Object.defineProperty(exports, 'version', {
663
692
  return version;
664
693
  }
665
694
  });
666
- //# sourceMappingURL=addStarknetInjectedWalletsExtension-V2tJ7Z87.cjs.map
695
+ //# sourceMappingURL=addStarknetInjectedWalletsExtension-aWdnaD0w.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addStarknetInjectedWalletsExtension-aWdnaD0w.cjs","names":["ETH_CONTRACT_ABI: Abi","Contract","RpcProvider","cairo","message: Record<string, unknown>","BaseError","InvalidParamError","Contract","cairo","WalletProviderEnum","connect: StarknetWalletProvider['connect']","getActiveNetworkId: StarknetWalletProvider['getActiveNetworkId']","getConnectedAddresses: StarknetWalletProvider['getConnectedAddresses']","getStarknetAccount: StarknetWalletProvider['getStarknetAccount']","RpcProvider","WalletAccount","signMessage: StarknetWalletProvider['signMessage']","switchActiveNetwork: StarknetWalletProvider['switchActiveNetwork']","destroy: StarknetWalletProvider['destroy']","starknetCore","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\n/** @notInstrumented */\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\n/** @notInstrumented */\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\n/** @notInstrumented */\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\n/** @notInstrumented */\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\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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\n/**\n * Retrieves a Starknet account from a wallet account.\n *\n * @example\n * ```ts\n * const account = await getStarknetAccount({ walletAccount: starknetAccount });\n * ```\n *\n * @param params.walletAccount - The wallet account to get the Starknet account for.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to a Starknet account instance.\n * @throws {NotStarknetProviderError} If the wallet account's provider is not a Starknet provider.\n * @see isStarknetWalletAccount\n * @see addStarknetExtension\n * @notInstrumented\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\n/**\n * Type guard function to check if a wallet account is a Starknet wallet account.\n *\n * @example\n * ```ts\n * const accounts = getWalletAccounts();\n * const starknetAccounts = accounts.filter(isStarknetWalletAccount);\n * ```\n *\n * @param walletAccount - The wallet account to check.\n * @returns True if the wallet account is a Starknet wallet account, false otherwise.\n * @see isStarknetNetworkProvider\n * @see addStarknetExtension\n * @notInstrumented\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 * @notInstrumented\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 getCore,\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\n/** @notInstrumented */\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 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 // eslint-disable-next-line custom-rules/require-single-object-param\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 // eslint-disable-next-line custom-rules/require-single-object-param\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 destroy: StarknetWalletProvider['destroy'] = async () => {\n cleanupEventEmitter();\n try {\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 } catch (err) {\n getCore(dynamicClient).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n const walletProvider: StarknetWalletProvider = {\n chain: 'STARK',\n connect,\n destroy,\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 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 * @notInstrumented\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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"}
@@ -2,7 +2,22 @@ import type { StarknetWalletAccount } from '../StarknetWalletAccount.types';
2
2
  type GetStarknetAccountParams = {
3
3
  walletAccount: StarknetWalletAccount;
4
4
  };
5
- /** @notInstrumented */
5
+ /**
6
+ * Retrieves a Starknet account from a wallet account.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const account = await getStarknetAccount({ walletAccount: starknetAccount });
11
+ * ```
12
+ *
13
+ * @param params.walletAccount - The wallet account to get the Starknet account for.
14
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
15
+ * @returns A promise that resolves to a Starknet account instance.
16
+ * @throws {NotStarknetProviderError} If the wallet account's provider is not a Starknet provider.
17
+ * @see isStarknetWalletAccount
18
+ * @see addStarknetExtension
19
+ * @notInstrumented
20
+ */
6
21
  export declare const getStarknetAccount: ({ walletAccount }: GetStarknetAccountParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<{
7
22
  account: import("starknet").WalletAccount;
8
23
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"getStarknetAccount.d.ts","sourceRoot":"","sources":["../../src/getStarknetAccount/getStarknetAccount.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,KAAK,wBAAwB,GAAG;IAC9B,aAAa,EAAE,qBAAqB,CAAC;CACtC,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,kBAAkB,sBACV,wBAAwB;;EAa5C,CAAC"}
1
+ {"version":3,"file":"getStarknetAccount.d.ts","sourceRoot":"","sources":["../../src/getStarknetAccount/getStarknetAccount.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,KAAK,wBAAwB,GAAG;IAC9B,aAAa,EAAE,qBAAqB,CAAC;CACtC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB,sBACV,wBAAwB;;EAa5C,CAAC"}
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-V2tJ7Z87.cjs');
1
+ const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-aWdnaD0w.cjs');
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
4
 
@@ -9,7 +9,16 @@ let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
9
9
  * This is a convenience function that adds support for a variety of Starknet wallets,
10
10
  * like Braavos, Ready and more.
11
11
  *
12
+ * @example
13
+ * ```ts
14
+ * const client = createDynamicClient({ environmentId: 'env-123' });
15
+ * addStarknetExtension(client);
16
+ * ```
17
+ *
12
18
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
19
+ * @returns void
20
+ * @see isStarknetWalletAccount
21
+ * @see isStarknetNetworkProvider
13
22
  * @notInstrumented
14
23
  */
15
24
  const addStarknetExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
@@ -18,7 +27,22 @@ const addStarknetExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefa
18
27
 
19
28
  //#endregion
20
29
  //#region src/isStarknetNetworkProvider/isStarknetNetworkProvider.ts
21
- /** @notInstrumented */
30
+ /**
31
+ * Type guard function to check if a network provider is a Starknet network provider.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * if (isStarknetNetworkProvider(networkProvider)) {
36
+ * const account = networkProvider.getStarknetAccount();
37
+ * }
38
+ * ```
39
+ *
40
+ * @param networkProvider - The network provider to check.
41
+ * @returns True if the network provider is a Starknet network provider, false otherwise.
42
+ * @see isStarknetWalletAccount
43
+ * @see addStarknetExtension
44
+ * @notInstrumented
45
+ */
22
46
  const isStarknetNetworkProvider = (networkProvider) => networkProvider.chain === "STARK";
23
47
 
24
48
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","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 * @notInstrumented\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\n/** @notInstrumented */\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":";;;;;;;;;;;;;;AAcA,MAAa,wBAAwB,8DAA2B,KAAW;AACzE,iFAAoC,OAAO;;;;;;ACV7C,MAAa,6BACX,oBAC+C,gBAAgB,UAAU;;;;mECAtDA,kDAAaC,oDAAe"}
1
+ {"version":3,"file":"index.cjs","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 * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: 'env-123' });\n * addStarknetExtension(client);\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see isStarknetWalletAccount\n * @see isStarknetNetworkProvider\n * @notInstrumented\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\n/**\n * Type guard function to check if a network provider is a Starknet network provider.\n *\n * @example\n * ```ts\n * if (isStarknetNetworkProvider(networkProvider)) {\n * const account = networkProvider.getStarknetAccount();\n * }\n * ```\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is a Starknet network provider, false otherwise.\n * @see isStarknetWalletAccount\n * @see addStarknetExtension\n * @notInstrumented\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":";;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,wBAAwB,8DAA2B,KAAW;AACzE,iFAAoC,OAAO;;;;;;;;;;;;;;;;;;;;;ACJ7C,MAAa,6BACX,oBAC+C,gBAAgB,UAAU;;;;mECftDA,kDAAaC,oDAAe"}
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
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-B5iHHn7G.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-5WMSYa9z.esm.js";
2
2
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
3
3
  import { getDefaultClient } from "@dynamic-labs-sdk/client/core";
4
4
 
@@ -9,7 +9,16 @@ import { getDefaultClient } from "@dynamic-labs-sdk/client/core";
9
9
  * This is a convenience function that adds support for a variety of Starknet wallets,
10
10
  * like Braavos, Ready and more.
11
11
  *
12
+ * @example
13
+ * ```ts
14
+ * const client = createDynamicClient({ environmentId: 'env-123' });
15
+ * addStarknetExtension(client);
16
+ * ```
17
+ *
12
18
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
19
+ * @returns void
20
+ * @see isStarknetWalletAccount
21
+ * @see isStarknetNetworkProvider
13
22
  * @notInstrumented
14
23
  */
15
24
  const addStarknetExtension = (client = getDefaultClient()) => {
@@ -18,7 +27,22 @@ const addStarknetExtension = (client = getDefaultClient()) => {
18
27
 
19
28
  //#endregion
20
29
  //#region src/isStarknetNetworkProvider/isStarknetNetworkProvider.ts
21
- /** @notInstrumented */
30
+ /**
31
+ * Type guard function to check if a network provider is a Starknet network provider.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * if (isStarknetNetworkProvider(networkProvider)) {
36
+ * const account = networkProvider.getStarknetAccount();
37
+ * }
38
+ * ```
39
+ *
40
+ * @param networkProvider - The network provider to check.
41
+ * @returns True if the network provider is a Starknet network provider, false otherwise.
42
+ * @see isStarknetWalletAccount
43
+ * @see addStarknetExtension
44
+ * @notInstrumented
45
+ */
22
46
  const isStarknetNetworkProvider = (networkProvider) => networkProvider.chain === "STARK";
23
47
 
24
48
  //#endregion
@@ -1 +1 @@
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 * @notInstrumented\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\n/** @notInstrumented */\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":";;;;;;;;;;;;;;AAcA,MAAa,wBAAwB,SAAS,kBAAkB,KAAW;AACzE,qCAAoC,OAAO;;;;;;ACV7C,MAAa,6BACX,oBAC+C,gBAAgB,UAAU;;;;ACA3E,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 * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: 'env-123' });\n * addStarknetExtension(client);\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see isStarknetWalletAccount\n * @see isStarknetNetworkProvider\n * @notInstrumented\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\n/**\n * Type guard function to check if a network provider is a Starknet network provider.\n *\n * @example\n * ```ts\n * if (isStarknetNetworkProvider(networkProvider)) {\n * const account = networkProvider.getStarknetAccount();\n * }\n * ```\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is a Starknet network provider, false otherwise.\n * @see isStarknetWalletAccount\n * @see addStarknetExtension\n * @notInstrumented\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":";;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,wBAAwB,SAAS,kBAAkB,KAAW;AACzE,qCAAoC,OAAO;;;;;;;;;;;;;;;;;;;;;ACJ7C,MAAa,6BACX,oBAC+C,gBAAgB,UAAU;;;;ACf3E,qBAAqBA,MAAaC,QAAe"}
package/dist/injected.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-V2tJ7Z87.cjs');
1
+ const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-aWdnaD0w.cjs');
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 { c as name, l as version, t as addStarknetInjectedWalletsExtension } from "./addStarknetInjectedWalletsExtension-B5iHHn7G.esm.js";
1
+ import { c as name, l as version, t as addStarknetInjectedWalletsExtension } from "./addStarknetInjectedWalletsExtension-5WMSYa9z.esm.js";
2
2
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
3
3
 
4
4
  //#region src/exports/injected.ts
@@ -1,5 +1,20 @@
1
1
  import type { NetworkProvider } from '@dynamic-labs-sdk/client';
2
2
  import type { StarknetNetworkProvider } from '../StarknetNetworkProvider.types';
3
- /** @notInstrumented */
3
+ /**
4
+ * Type guard function to check if a network provider is a Starknet network provider.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * if (isStarknetNetworkProvider(networkProvider)) {
9
+ * const account = networkProvider.getStarknetAccount();
10
+ * }
11
+ * ```
12
+ *
13
+ * @param networkProvider - The network provider to check.
14
+ * @returns True if the network provider is a Starknet network provider, false otherwise.
15
+ * @see isStarknetWalletAccount
16
+ * @see addStarknetExtension
17
+ * @notInstrumented
18
+ */
4
19
  export declare const isStarknetNetworkProvider: (networkProvider: NetworkProvider) => networkProvider is StarknetNetworkProvider;
5
20
  //# sourceMappingURL=isStarknetNetworkProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"isStarknetNetworkProvider.d.ts","sourceRoot":"","sources":["../../src/isStarknetNetworkProvider/isStarknetNetworkProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,uBAAuB;AACvB,eAAO,MAAM,yBAAyB,oBACnB,eAAe,KAC/B,eAAe,IAAI,uBAA4D,CAAC"}
1
+ {"version":3,"file":"isStarknetNetworkProvider.d.ts","sourceRoot":"","sources":["../../src/isStarknetNetworkProvider/isStarknetNetworkProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,yBAAyB,oBACnB,eAAe,KAC/B,eAAe,IAAI,uBAA4D,CAAC"}
@@ -1,5 +1,19 @@
1
1
  import type { WalletAccount } from '@dynamic-labs-sdk/client';
2
2
  import type { StarknetWalletAccount } from '../StarknetWalletAccount.types';
3
- /** @notInstrumented */
3
+ /**
4
+ * Type guard function to check if a wallet account is a Starknet wallet account.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * const accounts = getWalletAccounts();
9
+ * const starknetAccounts = accounts.filter(isStarknetWalletAccount);
10
+ * ```
11
+ *
12
+ * @param walletAccount - The wallet account to check.
13
+ * @returns True if the wallet account is a Starknet wallet account, false otherwise.
14
+ * @see isStarknetNetworkProvider
15
+ * @see addStarknetExtension
16
+ * @notInstrumented
17
+ */
4
18
  export declare const isStarknetWalletAccount: (walletAccount: WalletAccount) => walletAccount is StarknetWalletAccount;
5
19
  //# sourceMappingURL=isStarknetWalletAccount.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"isStarknetWalletAccount.d.ts","sourceRoot":"","sources":["../../src/isStarknetWalletAccount/isStarknetWalletAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,uBAAuB;AACvB,eAAO,MAAM,uBAAuB,kBACnB,aAAa,KAC3B,aAAa,IAAI,qBAAwD,CAAC"}
1
+ {"version":3,"file":"isStarknetWalletAccount.d.ts","sourceRoot":"","sources":["../../src/isStarknetWalletAccount/isStarknetWalletAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,kBACnB,aAAa,KAC3B,aAAa,IAAI,qBAAwD,CAAC"}