@dynamic-labs-sdk/starknet 0.13.0 → 0.15.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.
- package/dist/{addStarknetInjectedWalletsExtension-BvJdZmM-.cjs.js → addStarknetInjectedWalletsExtension-BziMAVID.cjs.js} +77 -4
- package/dist/addStarknetInjectedWalletsExtension-BziMAVID.cjs.js.map +1 -0
- package/dist/{addStarknetInjectedWalletsExtension-CfuGUdvX.esm.js → addStarknetInjectedWalletsExtension-sLdJrFu0.esm.js} +62 -7
- package/dist/addStarknetInjectedWalletsExtension-sLdJrFu0.esm.js.map +1 -0
- package/dist/index.cjs.js +4 -39
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +2 -37
- package/dist/index.esm.js.map +1 -1
- package/dist/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.d.ts.map +1 -1
- package/dist/injected.cjs.js +1 -1
- package/dist/injected.esm.js +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/utils/starknetTransferAmount/index.d.ts +2 -0
- package/dist/utils/starknetTransferAmount/index.d.ts.map +1 -0
- package/dist/utils/starknetTransferAmount/starknetTransferAmount.d.ts +12 -0
- package/dist/utils/starknetTransferAmount/starknetTransferAmount.d.ts.map +1 -0
- package/package.json +4 -4
- package/dist/addStarknetInjectedWalletsExtension-BvJdZmM-.cjs.js.map +0 -1
- package/dist/addStarknetInjectedWalletsExtension-CfuGUdvX.esm.js.map +0 -1
|
@@ -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.
|
|
37
|
+
var version = "0.15.0";
|
|
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-
|
|
655
|
+
//# sourceMappingURL=addStarknetInjectedWalletsExtension-BziMAVID.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addStarknetInjectedWalletsExtension-BziMAVID.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;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,EAAE;EACX,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;CACF;;;;AC9UD,MAAa,uBAAuB,OAAO,EACzC,SACA,kBACwD;CAWxD,MAAM,EAAE,YAAY,MANH,IAAIC,kBACnB,kBACA,sBANe,IAAIC,qBAAY,EAC/B,SAAS,YAAY,QAAQ,KAAK,IACnC,CAAC,CAMD,CAEkC,UAAU,QAAQ;AAErD,SAAQ,OAAOC,eAAM,QAAQ,QAAQ,IAAI,CAAC,IAAI,GAAG,aAAa,QAAQ,EAAE;;;;;ACzB1E,MAAa,iCACX,iBAC6B;CAC7B,gEAA6B,SAAS,YAAY;CAClD,YAAY,OAAO,EAAE,eAAe,EAClC,SAAS,MAAM,qBAAqB;EAClC;EACA;EACD,CAAC,EACH;CACF;;;;ACXD,MAAa,0CACX,WACS;CACT,MAAM,sGAC8B,OAAO;AAG3C,KAAI,+BAA+B,KAAK,CAAC,IAAI,QAAQ,CACnD;AAGF,gCAA+B,SAAS;EACtC,SAAS;EACT,OAAO;EACR,CAAC;;;;;ACjBJ,MAAM,mBAAmB;CACvB,aAAa;CACb,OAAO;EACL,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,gBAAgB;GACd;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACF;EACF;CACF;AAOD,MAAa,kCAAkC,EAC7C,cACA,cACqD;CACrD,IAAI,OAAO;AACX,KAAI;EACF,MAAM,EAAE,OAAO,aAAa,QAAQ,iBAClC,KAAK,MAAM,aAAa;AAC1B,UAAQ;AACR,WAAS;SACH;AACN,UAAQ;AACR,WAAS;;CAIX,MAAMC,UAAmC,EACvC,SAAS,MAAM,UAAU,GAAG,GAAG,EAChC;AAED,QAAO;EACL,GAAG;EACH,QAAQ;GACN;GACA,MAAM,OAAO,UAAU,GAAG,GAAG;GAC7B,SAAS;GACV;EACD;EACD;;;;;AC3DH,IAAa,2BAAb,cAA8CC,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,2BACX,kBAC2C,cAAc,UAAU;;;;ACOrE,MAAM,wBAAwB;;;;;;;AAQ9B,MAAa,yBAAyB,OACpC,EAAE,QAAQ,WAAW,OAAO,iBAC5B,WACyC;AACzC,KAAI,CAAC,wBAAwB,cAAc,CACzC,OAAM,IAAIC,2CACR,kDACD;CAGH,MAAM,EAAE,YAAY,MAAM,mBAAmB,EAAE,eAAe,EAAE,OAAO;CAEvE,MAAM,kBAAkB,OAAO,WAAW;CAG1C,MAAM,4EAAyC;EAAE;EAAQ,UAFxC,OAAO,YAAY;EAE+B,CAAC;AASpE,QAAO,EAAE,kBALM,MAFE,IAAIC,kBAAS,kBAAkB,iBAAiB,QAAQ,CAE3C,OAAO,YAAY,CAC/C,WACAC,eAAM,QAAQ,aAAa,CAC5B,CAAC,EAE+B,kBAAkB;;;;;ACpBrD,MAAa,0CAA0C,EACrD,eACA,6BAC0E;CAC1E,MAAM,qBAAqBC,8CAAmB;CAE9C,MAAM,iEAA8B;EAClC,OAAO;EACP,aAAa,uBAAuB;EACpC;EACD,CAAC;CAEF,MAAMC,UAA6C,YAAY;AAK7D,SAAO,EACL,YALe,MAAM,uBAAuB,QAAQ,EACpD,MAAM,0BACP,CAAC,EAGoB,KAAK,aAAa,EACpC,SACD,EAAE,EACJ;;CAGH,MAAMC,aAAmD,YAAY;AACnE,MAAI;AACF,SAAM,uBAAuB,QAAQ,EACnC,MAAM,qBAEP,CAAQ;UACH;AAGR,QAAMC,uCAAa,YAAY;;CAGjC,MAAMC,qBACJ,YAAY;AAKV,SAAO,EACL,WALc,MAAM,uBAAuB,QAAQ,EACnD,MAAM,yBACP,CAAC,EAID;;CAGL,MAAMC,wBACJ,YAAY;AAQV,SAAO,EACL,WARe,MAAM,uBAAuB,QAAQ;GACpD,QAAQ,EACN,aAAa,MACd;GACD,MAAM;GACP,CAAC,EAID;;CAGL,MAAMC,uBACJ,OAAO,EAAE,oBAAoB;AAC3B,6EACE,EAAE,eAAe,EACjB,cACD;EAED,MAAM,EAAE,gBAAgB,yDACtB,EAAE,eAAe,EACjB,cACD;AAED,mDAAc,aAAa,+BAA+B;EAE1D,MAAM,cAAc,IAAIC,qBAAY,EAClC,SAAS,YAAY,QAAQ,KAAK,IACnC,CAAC;AAOF,SAAO,EAAE,SALO,MAAMC,uBAAc,cAClC,aACA,uBACD,EAEiB;;CAGtB,MAAMC,cAAqD,OAAO,EAChE,SACA,oBACI;AACJ,mDAAc,eAAe,2BAA2B;AAExD,6EACE,EACE,eACD,EACD,cACD;EAED,MAAM,EAAE,cAAc,MAAM,oBAAoB;EAEhD,MAAM,iBAAiB,+BAA+B;GACpD,SAAS;GACT,cAAc;GACf,CAAC;AAOF,SAAO,EAAE,YALS,MAAM,uBAAuB,QAAQ;GACrD,QAAQ;GACR,MAAM;GACP,CAAC,EAE4B,KAAK,IAAI,EAAE;;CAG3C,MAAMC,sBACJ,OAAO,EAAE,gBAAgB;AACvB,QAAM,uBAAuB,QAAQ;GACnC,QAAQ,EACN,SAAS,WACV;GACD,MAAM;GACP,CAAC;;CAGN,MAAM,EAAE,iBAAiB,4FAIpB;EACD,uBAAuB,EAAE,uBAAuB;AAC9C,oDAAc,kBAAkB,iCAAiC;AAEjE,oBAAiB,6BAA6B;AAC9C,oBAAiB,6BAA6B;;EAGhD,sBAAsB,EACpB,uBACA,2BACI;GACJ,MAAM,qBAAqB,aAAmC;AAC5D,0BAAsB,EACpB,WAAW,YAAY,EAAE,EAC1B,CAAC;;AAEJ,0BAAuB,GAAG,mBAAmB,kBAAkB;GAC/D,MAAM,oCAAoC;AACxC,2BAAuB,IAAI,mBAAmB,kBAAkB;;GAGlE,MAAM,oBAAoB,YAAgC;AACxD,QAAI,CAAC,QACH;AAGF,yBAAqB,EACnB,WAAW,QAAQ,UAAU,EAC9B,CAAC;;AAEJ,0BAAuB,GAAG,kBAAkB,iBAAiB;GAC7D,MAAM,oCAAoC;AACxC,2BAAuB,IAAI,kBAAkB,iBAAiB;;AAGhE,UAAO;IACL;IACA;IACD;;EAGH,iBAAiB,CAAC,mBAAmB,iBAAiB;EACvD,CAAC;CAEJ,MAAMC,YAAiD,YAAY;AACjE,uBAAqB;;AA6BvB,QA1B+C;EAC7C,OAAO;EACP;EACA;EACA,IAAI,SAAS;AACX,UAAO,iBAAiB;;EAE1B;EACA;EACA;EACA,0EAAuC,uBAAuB,KAAK;EACnE;EACA,UAAU;GACR,aAAa,uBAAuB;GACpC,MACE,OAAO,uBAAuB,SAAS,WACnC,uBAAuB,OACvB,uBAAuB,KAAK;GACnC;EACD;EACA;EACA;EACA,iBAAiB,SAAS,uBAAuB,MAAM,cAAc;EACrE;EACD;;;;;ACtNH,MAAa,0CACX;;;;;;;;AASF,MAAa,uCACX,8DAA2B,KAClB;AACT,qDAEI,EAAE,cAAc,yCAAyC,EACzD,OACD,CAED;AAGF,sDACE,EAAE,cAAc,yCAAyC,EACzD,OACD;AAED,wCAAuC,OAAO;CAE9C,MAAM,sFAAmD,OAAO;AAEhE,wCACG,qBAAqB,CACrB,MAAM,4BAA4B;AACjC,0BAAwB,SAAS,2BAA2B;GAC1D,MAAM,iBAAiB,uCAAuC;IAC5D,eAAe;IACf;IACD,CAAC;AAEF,0BAAuB,SAAS;IAC9B,UAAUC,qDAAuB;IACjC;IACD,CAAC;IACF;GACF,CACD,OAAO,UAAU;AAChB,6CAAQ,OAAO,CAAC,OAAO,MACrB,4CACA,MACD;GACD"}
|
|
@@ -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.
|
|
9
|
+
var version = "0.15.0";
|
|
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 {
|
|
513
|
-
//# sourceMappingURL=addStarknetInjectedWalletsExtension-
|
|
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-sLdJrFu0.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addStarknetInjectedWalletsExtension-sLdJrFu0.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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"}
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-
|
|
1
|
+
const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-BziMAVID.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
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","names":["
|
|
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
|
|
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-sLdJrFu0.esm.js";
|
|
2
2
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
3
|
-
import { getDefaultClient
|
|
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);
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","names":["packageName","packageVersion"],"sources":["../src/addStarknetExtension/addStarknetExtension.ts","../src/
|
|
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;
|
|
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"}
|
package/dist/injected.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-
|
|
1
|
+
const require_addStarknetInjectedWalletsExtension = require('./addStarknetInjectedWalletsExtension-BziMAVID.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
|
package/dist/injected.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { c as name, l as version, t as addStarknetInjectedWalletsExtension } from "./addStarknetInjectedWalletsExtension-sLdJrFu0.esm.js";
|
|
2
2
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
3
3
|
|
|
4
4
|
//#region src/exports/injected.ts
|