@dynamic-labs-sdk/solana 0.17.3 → 0.18.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/addSolanaExtension/addSolanaExtension.d.ts +1 -0
- package/dist/addSolanaExtension/addSolanaExtension.d.ts.map +1 -1
- package/dist/{addSolanaWalletStandardExtension-2OLk1veq.esm.js → addSolanaWalletStandardExtension-BO0D6C7a.esm.js} +7 -2
- package/dist/addSolanaWalletStandardExtension-BO0D6C7a.esm.js.map +1 -0
- package/dist/{addSolanaWalletStandardExtension-BDcqUJj3.cjs.js → addSolanaWalletStandardExtension-DfSdWJZm.cjs.js} +7 -2
- package/dist/addSolanaWalletStandardExtension-DfSdWJZm.cjs.js.map +1 -0
- package/dist/{addWaasSolanaExtension-cV_IV402.cjs.js → addWaasSolanaExtension-BM8g8aGj.cjs.js} +6 -3
- package/dist/addWaasSolanaExtension-BM8g8aGj.cjs.js.map +1 -0
- package/dist/{addWaasSolanaExtension-DpaXrLfj.esm.js → addWaasSolanaExtension-DLCqqCWS.esm.js} +5 -2
- package/dist/addWaasSolanaExtension-DLCqqCWS.esm.js.map +1 -0
- package/dist/getSolanaConnection/getSolanaConnection.d.ts +1 -0
- package/dist/getSolanaConnection/getSolanaConnection.d.ts.map +1 -1
- package/dist/index.cjs.js +24 -3
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +24 -3
- package/dist/index.esm.js.map +1 -1
- package/dist/isSolanaGasSponsorshipEnabled/isSolanaGasSponsorshipEnabled.d.ts +1 -0
- package/dist/isSolanaGasSponsorshipEnabled/isSolanaGasSponsorshipEnabled.d.ts.map +1 -1
- package/dist/isSolanaNetworkProvider/isSolanaNetworkProvider.d.ts +1 -0
- package/dist/isSolanaNetworkProvider/isSolanaNetworkProvider.d.ts.map +1 -1
- package/dist/isSolanaWalletAccount/isSolanaWalletAccount.d.ts +1 -0
- package/dist/isSolanaWalletAccount/isSolanaWalletAccount.d.ts.map +1 -1
- package/dist/isSolanaWalletProvider/isSolanaWalletProvider.d.ts +1 -0
- package/dist/isSolanaWalletProvider/isSolanaWalletProvider.d.ts.map +1 -1
- package/dist/phantomRedirect/addPhantomRedirectSolanaExtension/addPhantomRedirectSolanaExtension.d.ts +1 -0
- package/dist/phantomRedirect/addPhantomRedirectSolanaExtension/addPhantomRedirectSolanaExtension.d.ts.map +1 -1
- package/dist/phantomRedirect/completePhantomRedirect/completePhantomRedirect.d.ts +1 -0
- package/dist/phantomRedirect/completePhantomRedirect/completePhantomRedirect.d.ts.map +1 -1
- package/dist/phantomRedirect/createPhantomRedirectWalletProvider/createPhantomRedirectWalletProvider.d.ts +1 -0
- package/dist/phantomRedirect/createPhantomRedirectWalletProvider/createPhantomRedirectWalletProvider.d.ts.map +1 -1
- package/dist/phantomRedirect/detectPhantomRedirect/detectPhantomRedirect.d.ts +1 -0
- package/dist/phantomRedirect/detectPhantomRedirect/detectPhantomRedirect.d.ts.map +1 -1
- package/dist/phantomRedirect/utils/broadcastPhantomEvent/broadcastPhantomEvent.d.ts +1 -0
- package/dist/phantomRedirect/utils/broadcastPhantomEvent/broadcastPhantomEvent.d.ts.map +1 -1
- package/dist/phantomRedirect/utils/buildPhantomDeepLink/buildPhantomDeepLink.d.ts +1 -0
- package/dist/phantomRedirect/utils/buildPhantomDeepLink/buildPhantomDeepLink.d.ts.map +1 -1
- package/dist/phantomRedirect/utils/cleanPhantomParamsFromUrl/cleanPhantomParamsFromUrl.d.ts +1 -0
- package/dist/phantomRedirect/utils/cleanPhantomParamsFromUrl/cleanPhantomParamsFromUrl.d.ts.map +1 -1
- package/dist/phantomRedirect/utils/crypto/createNaClSharedSecret/createNaClSharedSecret.d.ts +1 -0
- package/dist/phantomRedirect/utils/crypto/createNaClSharedSecret/createNaClSharedSecret.d.ts.map +1 -1
- package/dist/phantomRedirect/utils/crypto/decryptPayload/decryptPayload.d.ts +1 -0
- package/dist/phantomRedirect/utils/crypto/decryptPayload/decryptPayload.d.ts.map +1 -1
- package/dist/phantomRedirect/utils/crypto/encryptPayload/encryptPayload.d.ts +1 -0
- package/dist/phantomRedirect/utils/crypto/encryptPayload/encryptPayload.d.ts.map +1 -1
- package/dist/phantomRedirect/utils/crypto/generateNaClKeyPair/generateNaClKeyPair.d.ts +1 -0
- package/dist/phantomRedirect/utils/crypto/generateNaClKeyPair/generateNaClKeyPair.d.ts.map +1 -1
- package/dist/phantomRedirect/utils/getPhantomCluster/getPhantomCluster.d.ts +1 -0
- package/dist/phantomRedirect/utils/getPhantomCluster/getPhantomCluster.d.ts.map +1 -1
- package/dist/phantomRedirect/utils/listenForPhantomBroadcast/listenForPhantomBroadcast.d.ts +1 -0
- package/dist/phantomRedirect/utils/listenForPhantomBroadcast/listenForPhantomBroadcast.d.ts.map +1 -1
- package/dist/phantomRedirect/utils/parsePhantomRedirectParams/parsePhantomRedirectParams.d.ts +1 -0
- package/dist/phantomRedirect/utils/parsePhantomRedirectParams/parsePhantomRedirectParams.d.ts.map +1 -1
- package/dist/registerSolanaNetworkProviderBuilder/registerSolanaNetworkProviderBuilder.d.ts +1 -0
- package/dist/registerSolanaNetworkProviderBuilder/registerSolanaNetworkProviderBuilder.d.ts.map +1 -1
- package/dist/signAllTransactions/signAllTransactions.d.ts +1 -0
- package/dist/signAllTransactions/signAllTransactions.d.ts.map +1 -1
- package/dist/signAndSendSponsoredTransaction/signAndSendSponsoredTransaction.d.ts +1 -0
- package/dist/signAndSendSponsoredTransaction/signAndSendSponsoredTransaction.d.ts.map +1 -1
- package/dist/signAndSendTransaction/signAndSendTransaction.d.ts +1 -0
- package/dist/signAndSendTransaction/signAndSendTransaction.d.ts.map +1 -1
- package/dist/signTransaction/signTransaction.d.ts +1 -0
- package/dist/signTransaction/signTransaction.d.ts.map +1 -1
- package/dist/simulateSolanaTransaction/simulateSolanaTransaction.d.ts +1 -0
- package/dist/simulateSolanaTransaction/simulateSolanaTransaction.d.ts.map +1 -1
- package/dist/{solanaTransferAmount-CiK1rdXP.cjs.js → solanaTransferAmount-DTP1mG1H.cjs.js} +13 -3
- package/dist/solanaTransferAmount-DTP1mG1H.cjs.js.map +1 -0
- package/dist/{solanaTransferAmount-DhgqzB48.esm.js → solanaTransferAmount-NfRwfMZ7.esm.js} +12 -2
- package/dist/solanaTransferAmount-NfRwfMZ7.esm.js.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/utils/calculateSolanaTransactionFee/calculateSolanaTransactionFee.d.ts +1 -0
- package/dist/utils/calculateSolanaTransactionFee/calculateSolanaTransactionFee.d.ts.map +1 -1
- package/dist/utils/createSolanaNetworkProvider/createSolanaNetworkProvider.d.ts +1 -0
- package/dist/utils/createSolanaNetworkProvider/createSolanaNetworkProvider.d.ts.map +1 -1
- package/dist/utils/fetchSolBalance/fetchSolBalance.d.ts +1 -0
- package/dist/utils/fetchSolBalance/fetchSolBalance.d.ts.map +1 -1
- package/dist/utils/isVersionedTransaction/isVersionedTransaction.d.ts +1 -0
- package/dist/utils/isVersionedTransaction/isVersionedTransaction.d.ts.map +1 -1
- package/dist/utils/solanaExecuteCheckoutTransaction/solanaExecuteCheckoutTransaction.d.ts +1 -0
- package/dist/utils/solanaExecuteCheckoutTransaction/solanaExecuteCheckoutTransaction.d.ts.map +1 -1
- package/dist/utils/solanaTransferAmount/solanaTransferAmount.d.ts +1 -0
- package/dist/utils/solanaTransferAmount/solanaTransferAmount.d.ts.map +1 -1
- package/dist/waas/addWaasSolanaExtension/addWaasSolanaExtension.d.ts +1 -0
- package/dist/waas/addWaasSolanaExtension/addWaasSolanaExtension.d.ts.map +1 -1
- package/dist/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.d.ts +1 -0
- package/dist/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.d.ts.map +1 -1
- package/dist/waas/utils/sponsorTransaction/sponsorTransaction.d.ts +1 -0
- package/dist/waas/utils/sponsorTransaction/sponsorTransaction.d.ts.map +1 -1
- package/dist/waas.cjs.js +3 -3
- package/dist/waas.esm.js +2 -2
- package/dist/walletConnect/addWalletConnectSolanaExtension/addWalletConnectSolanaExtension.d.ts +1 -0
- package/dist/walletConnect/addWalletConnectSolanaExtension/addWalletConnectSolanaExtension.d.ts.map +1 -1
- package/dist/walletConnect/connectAndVerifyWithWalletConnectSolana/connectAndVerifyWithWalletConnectSolana.d.ts +1 -0
- package/dist/walletConnect/connectAndVerifyWithWalletConnectSolana/connectAndVerifyWithWalletConnectSolana.d.ts.map +1 -1
- package/dist/walletConnect/connectWithWalletConnectSolana/connectWithWalletConnectSolana.d.ts +1 -0
- package/dist/walletConnect/connectWithWalletConnectSolana/connectWithWalletConnectSolana.d.ts.map +1 -1
- package/dist/walletConnect/createWalletProviderFromWalletConnectSolanaSession/createWalletProviderFromWalletConnectSolanaSession.d.ts +1 -0
- package/dist/walletConnect/createWalletProviderFromWalletConnectSolanaSession/createWalletProviderFromWalletConnectSolanaSession.d.ts.map +1 -1
- package/dist/walletConnect/recoverSolanaWalletConnectWalletProviders/recoverSolanaWalletConnectWalletProviders.d.ts +1 -0
- package/dist/walletConnect/recoverSolanaWalletConnectWalletProviders/recoverSolanaWalletConnectWalletProviders.d.ts.map +1 -1
- package/dist/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts +1 -0
- package/dist/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts.map +1 -1
- package/dist/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts +1 -0
- package/dist/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts.map +1 -1
- package/dist/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/getActiveNetworkId.d.ts +1 -0
- package/dist/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/getActiveNetworkId.d.ts.map +1 -1
- package/dist/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.d.ts +1 -0
- package/dist/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.d.ts.map +1 -1
- package/dist/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.d.ts +1 -0
- package/dist/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.d.ts.map +1 -1
- package/dist/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.d.ts +1 -0
- package/dist/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.d.ts.map +1 -1
- package/dist/walletStandard.cjs.js +2 -2
- package/dist/walletStandard.esm.js +2 -2
- package/package.json +5 -5
- package/dist/addSolanaWalletStandardExtension-2OLk1veq.esm.js.map +0 -1
- package/dist/addSolanaWalletStandardExtension-BDcqUJj3.cjs.js.map +0 -1
- package/dist/addWaasSolanaExtension-DpaXrLfj.esm.js.map +0 -1
- package/dist/addWaasSolanaExtension-cV_IV402.cjs.js.map +0 -1
- package/dist/solanaTransferAmount-CiK1rdXP.cjs.js.map +0 -1
- package/dist/solanaTransferAmount-DhgqzB48.esm.js.map +0 -1
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* including standard wallets and embedded wallets managed by Dynamic's infrastructure.
|
|
7
7
|
*
|
|
8
8
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
9
|
+
* @not-instrumented
|
|
9
10
|
*/
|
|
10
11
|
export declare const addSolanaExtension: (client?: import("@dynamic-labs-sdk/client").DynamicClient) => void;
|
|
11
12
|
//# sourceMappingURL=addSolanaExtension.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addSolanaExtension.d.ts","sourceRoot":"","sources":["../../src/addSolanaExtension/addSolanaExtension.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"addSolanaExtension.d.ts","sourceRoot":"","sources":["../../src/addSolanaExtension/addSolanaExtension.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,iEAAkC,IAGhE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as solanaExecuteCheckoutTransaction, l as registerSolanaNetworkProviderBuilder, s as isVersionedTransaction, t as solanaTransferAmount } from "./solanaTransferAmount-
|
|
1
|
+
import { i as solanaExecuteCheckoutTransaction, l as registerSolanaNetworkProviderBuilder, s as isVersionedTransaction, t as solanaTransferAmount } from "./solanaTransferAmount-NfRwfMZ7.esm.js";
|
|
2
2
|
import { WalletProviderPriority, assertDefined, bufferToBase64, createWalletProviderEventEmitter, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getDefaultClient, getWalletProviderRegistry, hasExtension, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
|
|
3
3
|
import { Transaction, VersionedTransaction } from "@solana/web3.js";
|
|
4
4
|
import { assertWalletAccountSigningAvailability, getActiveNetworkData } from "@dynamic-labs-sdk/client";
|
|
@@ -7,6 +7,7 @@ import { getWallets } from "@wallet-standard/app";
|
|
|
7
7
|
import bs58 from "bs58";
|
|
8
8
|
|
|
9
9
|
//#region src/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.ts
|
|
10
|
+
/** @not-instrumented */
|
|
10
11
|
const getActiveNetworkCluster = async ({ walletAccount }, client) => {
|
|
11
12
|
const { networkData } = await getActiveNetworkData({ walletAccount }, client);
|
|
12
13
|
if (!networkData?.cluster) return;
|
|
@@ -15,12 +16,14 @@ const getActiveNetworkCluster = async ({ walletAccount }, client) => {
|
|
|
15
16
|
|
|
16
17
|
//#endregion
|
|
17
18
|
//#region src/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.ts
|
|
19
|
+
/** @not-instrumented */
|
|
18
20
|
const getFeaturesForSolanaStandardWallet = (wallet) => {
|
|
19
21
|
return wallet.features;
|
|
20
22
|
};
|
|
21
23
|
|
|
22
24
|
//#endregion
|
|
23
25
|
//#region src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.ts
|
|
26
|
+
/** @not-instrumented */
|
|
24
27
|
const createWalletProviderFromSolanaStandardWallet = ({ dynamicClient, walletStandardWallet }) => {
|
|
25
28
|
const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);
|
|
26
29
|
const walletProviderType = WalletProviderEnum.BrowserExtension;
|
|
@@ -157,6 +160,7 @@ const createWalletProviderFromSolanaStandardWallet = ({ dynamicClient, walletSta
|
|
|
157
160
|
|
|
158
161
|
//#endregion
|
|
159
162
|
//#region src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.ts
|
|
163
|
+
/** @not-instrumented */
|
|
160
164
|
const hasAllRequiredFeatures = (wallet) => {
|
|
161
165
|
return Boolean(wallet.features?.["standard:events"] && wallet.features?.["standard:connect"] && wallet.features?.["solana:signTransaction"] && wallet.features?.["solana:signMessage"]);
|
|
162
166
|
};
|
|
@@ -171,6 +175,7 @@ const SOLANA_WALLET_STANDARD_EXTENSION_KEY = "solanaWalletStandard";
|
|
|
171
175
|
* automatically detecting and registering compatible wallets for use with the Dynamic SDK.
|
|
172
176
|
*
|
|
173
177
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
178
|
+
* @not-instrumented
|
|
174
179
|
*/
|
|
175
180
|
const addSolanaWalletStandardExtension = (client = getDefaultClient()) => {
|
|
176
181
|
if (hasExtension({ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY }, client)) return;
|
|
@@ -191,4 +196,4 @@ const addSolanaWalletStandardExtension = (client = getDefaultClient()) => {
|
|
|
191
196
|
|
|
192
197
|
//#endregion
|
|
193
198
|
export { addSolanaWalletStandardExtension as t };
|
|
194
|
-
//# sourceMappingURL=addSolanaWalletStandardExtension-
|
|
199
|
+
//# sourceMappingURL=addSolanaWalletStandardExtension-BO0D6C7a.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addSolanaWalletStandardExtension-BO0D6C7a.esm.js","names":["connect: SolanaWalletProvider['connect']","getActiveNetworkId: SolanaWalletProvider['getActiveNetworkId']","getConnectedAddresses: SolanaWalletProvider['getConnectedAddresses']","signAllTransactions: SolanaWalletProvider['signAllTransactions']","signAndSendTransaction: SolanaWalletProvider['signAndSendTransaction']","signMessage: SolanaWalletProvider['signMessage']","signTransaction: SolanaWalletProvider['signTransaction']","switchActiveNetwork: SolanaWalletProvider['switchActiveNetwork']","terminate: SolanaWalletProvider['terminate']"],"sources":["../src/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.ts","../src/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.ts","../src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.ts","../src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.ts","../src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.ts"],"sourcesContent":["import type { DynamicClient, WalletAccount } from '@dynamic-labs-sdk/client';\nimport { getActiveNetworkData } from '@dynamic-labs-sdk/client';\n\ntype GetActiveNetworkClusterParams = {\n walletAccount: WalletAccount;\n};\n\n/** @not-instrumented */\nexport const getActiveNetworkCluster = async (\n { walletAccount }: GetActiveNetworkClusterParams,\n client: DynamicClient\n): Promise<`solana:${string}` | undefined> => {\n const { networkData } = await getActiveNetworkData({ walletAccount }, client);\n\n if (!networkData?.cluster) {\n return;\n }\n\n return `solana:${networkData.cluster}`;\n};\n","import type { Wallet } from '@wallet-standard/base';\nimport type {\n SignAndSendTransactionFeature,\n SignMessageFeature,\n SignTransactionFeature,\n} from '@wallet-standard/experimental-features';\nimport type {\n StandardConnectFeature,\n StandardDisconnectFeature,\n StandardEventsFeature,\n} from '@wallet-standard/features';\n\ntype WalletStandardFeatures = {\n 'solana:signAndSendTransaction': SignAndSendTransactionFeature['experimental:signAndSendTransaction'];\n 'solana:signMessage': SignMessageFeature['experimental:signMessage'];\n 'solana:signTransaction': SignTransactionFeature['experimental:signTransaction'];\n} & StandardConnectFeature &\n Partial<StandardDisconnectFeature> &\n StandardEventsFeature;\n\n/** @not-instrumented */\nexport const getFeaturesForSolanaStandardWallet = (wallet: Wallet) => {\n return wallet.features as WalletStandardFeatures;\n};\n","import {\n type DynamicClient,\n assertWalletAccountSigningAvailability,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n bufferToBase64,\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport type { Wallet as WalletStandardWallet } from '@wallet-standard/base';\nimport type { SignTransactionInput } from '@wallet-standard/experimental-features';\nimport bs58 from 'bs58';\n\nimport type { SolanaWalletProvider } from '../../../SolanaWalletProvider.types';\nimport { isVersionedTransaction } from '../../../utils/isVersionedTransaction';\nimport { solanaExecuteCheckoutTransaction } from '../../../utils/solanaExecuteCheckoutTransaction';\nimport { solanaTransferAmount } from '../../../utils/solanaTransferAmount';\nimport { getActiveNetworkCluster } from '../getActiveNetworkCluster';\nimport { getFeaturesForSolanaStandardWallet } from '../getFeaturesForSolanaStandardWallet';\n\ntype CreateWalletProviderFromSolanaStandardWalletParams = {\n dynamicClient: DynamicClient;\n walletStandardWallet: WalletStandardWallet;\n};\n\n/** @not-instrumented */\nexport const createWalletProviderFromSolanaStandardWallet = ({\n dynamicClient,\n walletStandardWallet,\n}: CreateWalletProviderFromSolanaStandardWalletParams): SolanaWalletProvider => {\n const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);\n\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain: 'SOL',\n displayName: walletStandardWallet.name,\n walletProviderType,\n });\n\n const connect: SolanaWalletProvider['connect'] = async () => {\n const autoConnectedAccounts = walletStandardWallet.accounts;\n\n // some wallets like Farcaster will auto inject the account into the wallet object\n // instead of returning it from the connect method\n // so we need to check for that first\n if (\n autoConnectedAccounts?.length &&\n autoConnectedAccounts[0].publicKey &&\n autoConnectedAccounts[0].address\n ) {\n return {\n addresses: [\n {\n address: autoConnectedAccounts[0].address,\n publicKey: autoConnectedAccounts[0].publicKey.toString(),\n },\n ],\n };\n }\n\n const connectMethod = features['standard:connect']?.connect;\n\n assertDefined(connectMethod, 'connect method not found in wallet features');\n\n const result = await connectMethod({ silent: false });\n\n return {\n addresses: result.accounts?.map((account) => ({\n address: account.address,\n publicKey: account.publicKey?.toString(),\n })),\n };\n };\n const disconnectFeature = features['standard:disconnect']?.disconnect;\n\n const getActiveNetworkId: SolanaWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const getCurrentAccount = async () => {\n if (!isConnected() && connect) {\n await connect();\n }\n\n const account = walletStandardWallet.accounts?.[0];\n\n assertDefined(account, 'No connected accounts found');\n\n return account;\n };\n\n const isConnected = (): boolean => {\n return walletStandardWallet.accounts?.length > 0;\n };\n\n const getConnectedAddresses: SolanaWalletProvider['getConnectedAddresses'] =\n async () => {\n if (!isConnected() && connect) {\n await connect();\n }\n\n return {\n addresses: walletStandardWallet.accounts.map(\n (account) => account.address\n ),\n };\n };\n\n const signAllTransactions: SolanaWalletProvider['signAllTransactions'] =\n async ({ transactions, walletAccount }) => {\n const signTransactionMethod =\n features['solana:signTransaction']?.signTransaction;\n\n assertDefined(\n signTransactionMethod,\n 'signTransaction method not found in wallet features'\n );\n\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const account = await getCurrentAccount();\n\n const chain = await getActiveNetworkCluster(\n { walletAccount },\n dynamicClient\n );\n assertDefined(chain, 'Could not get active chain for wallet account');\n\n const transactionsInput: SignTransactionInput[] = transactions.map(\n (transaction) => ({\n account,\n chain,\n transaction: transaction.serialize({\n requireAllSignatures: false,\n }) as Uint8Array<ArrayBufferLike>,\n })\n );\n\n const signTransactionResult = await signTransactionMethod(\n ...transactionsInput\n );\n\n const signedTransactions = signTransactionResult.map(\n ({ signedTransaction }, index) => {\n const inputTransaction = transactions[index];\n type T = typeof inputTransaction;\n\n if (isVersionedTransaction(inputTransaction)) {\n return VersionedTransaction.deserialize(signedTransaction) as T;\n }\n return Transaction.from(signedTransaction) as T;\n }\n );\n\n return { signedTransactions };\n };\n\n const signAndSendTransaction: SolanaWalletProvider['signAndSendTransaction'] =\n async ({ transaction, walletAccount }) => {\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const signAndSendTransactionMethod =\n features['solana:signAndSendTransaction']?.signAndSendTransaction;\n\n assertDefined(\n signAndSendTransactionMethod,\n 'signAndSendTransaction method not found in wallet features'\n );\n\n const account = await getCurrentAccount();\n\n const chain = await getActiveNetworkCluster(\n { walletAccount },\n dynamicClient\n );\n assertDefined(chain, 'Could not get active chain for wallet account');\n\n const signedTransactions = await signAndSendTransactionMethod({\n account,\n chain,\n transaction: transaction.serialize({\n requireAllSignatures: false,\n }) as Uint8Array<ArrayBufferLike>,\n });\n\n const [{ signature }] = signedTransactions;\n\n return { signature: bs58.encode(signature) };\n };\n\n const signMessage: SolanaWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const signMessageMethod = features['solana:signMessage']?.signMessage;\n\n assertDefined(\n signMessageMethod,\n 'signMessage method not found in wallet features'\n );\n\n assertDefined(walletAccount, 'Wallet account not found');\n\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const encodedMessage = new TextEncoder().encode(message);\n\n const account = await getCurrentAccount();\n\n const messages = await signMessageMethod({\n account,\n message: encodedMessage,\n });\n\n return { signature: bufferToBase64(messages[0].signature) };\n };\n\n const signTransaction: SolanaWalletProvider['signTransaction'] = async ({\n transaction,\n walletAccount,\n }) => {\n const signedTransactions = await signAllTransactions({\n transactions: [transaction],\n walletAccount,\n });\n\n return { signedTransaction: signedTransactions.signedTransactions[0] };\n };\n\n const switchActiveNetwork: SolanaWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const { getEventEmitter, cleanupEventEmitter } =\n createWalletProviderEventEmitter<VoidFunction>({\n removeEventListeners: ({ setupReturnValue }) => {\n assertDefined(setupReturnValue, 'Setup return value not defined');\n\n setupReturnValue();\n },\n\n setupEventListeners: ({ handleAccountsChanged }) => {\n const eventsFeature = features['standard:events'];\n\n return eventsFeature.on('change', ({ accounts }) => {\n handleAccountsChanged({\n addresses: accounts?.map((account) => account.address) ?? [],\n });\n });\n },\n\n supportedEvents: ['accountsChanged'],\n });\n\n const terminate: SolanaWalletProvider['terminate'] = async () => {\n cleanupEventEmitter();\n };\n\n const walletProvider: SolanaWalletProvider = {\n chain: 'SOL',\n connect,\n disconnect: disconnectFeature,\n get events() {\n return getEventEmitter();\n },\n executeCheckoutTransaction: (args) =>\n solanaExecuteCheckoutTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(walletStandardWallet.name),\n key,\n metadata: {\n displayName: walletStandardWallet.name,\n icon: walletStandardWallet.icon,\n },\n signAllTransactions,\n signAndSendTransaction,\n signMessage,\n signTransaction,\n switchActiveNetwork,\n terminate,\n transferAmount: (args) => solanaTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n\n return walletProvider;\n};\n","import type { Wallet } from '@wallet-standard/base';\n\n/** @not-instrumented */\nexport const hasAllRequiredFeatures = (wallet: Wallet): boolean => {\n return Boolean(\n wallet.features?.['standard:events'] &&\n wallet.features?.['standard:connect'] &&\n wallet.features?.['solana:signTransaction'] &&\n wallet.features?.['solana:signMessage']\n );\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport { getWallets } from '@wallet-standard/app';\n\nimport { registerSolanaNetworkProviderBuilder } from '../../registerSolanaNetworkProviderBuilder';\nimport { createWalletProviderFromSolanaStandardWallet } from '../utils/createWalletProviderFromSolanaStandardWallet';\nimport { hasAllRequiredFeatures } from '../utils/hasAllRequiredFeatures';\n\nexport const SOLANA_WALLET_STANDARD_EXTENSION_KEY = 'solanaWalletStandard';\n\n/**\n * Adds the Solana Wallet Standard extension to the Dynamic client.\n *\n * This extension enables integration with wallets that implement the Solana Wallet Standard,\n * automatically detecting and registering compatible wallets for use with the Dynamic SDK.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @not-instrumented\n */\nexport const addSolanaWalletStandardExtension = (\n client = getDefaultClient()\n): void => {\n if (\n hasExtension({ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension(\n { extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY },\n client\n );\n\n registerSolanaNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletStandardWallets = getWallets()\n .get()\n .filter(hasAllRequiredFeatures);\n\n walletStandardWallets.forEach((walletStandardWallet) => {\n const walletProvider = createWalletProviderFromSolanaStandardWallet({\n dynamicClient: client,\n walletStandardWallet,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,\n walletProvider,\n });\n });\n};\n"],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
25
25
|
}) : target, mod));
|
|
26
26
|
|
|
27
27
|
//#endregion
|
|
28
|
-
const require_solanaTransferAmount = require('./solanaTransferAmount-
|
|
28
|
+
const require_solanaTransferAmount = require('./solanaTransferAmount-DTP1mG1H.cjs.js');
|
|
29
29
|
let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
|
|
30
30
|
let _solana_web3_js = require("@solana/web3.js");
|
|
31
31
|
let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
|
|
@@ -35,6 +35,7 @@ let bs58 = require("bs58");
|
|
|
35
35
|
bs58 = __toESM(bs58);
|
|
36
36
|
|
|
37
37
|
//#region src/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.ts
|
|
38
|
+
/** @not-instrumented */
|
|
38
39
|
const getActiveNetworkCluster = async ({ walletAccount }, client) => {
|
|
39
40
|
const { networkData } = await (0, _dynamic_labs_sdk_client.getActiveNetworkData)({ walletAccount }, client);
|
|
40
41
|
if (!networkData?.cluster) return;
|
|
@@ -43,12 +44,14 @@ const getActiveNetworkCluster = async ({ walletAccount }, client) => {
|
|
|
43
44
|
|
|
44
45
|
//#endregion
|
|
45
46
|
//#region src/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.ts
|
|
47
|
+
/** @not-instrumented */
|
|
46
48
|
const getFeaturesForSolanaStandardWallet = (wallet) => {
|
|
47
49
|
return wallet.features;
|
|
48
50
|
};
|
|
49
51
|
|
|
50
52
|
//#endregion
|
|
51
53
|
//#region src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.ts
|
|
54
|
+
/** @not-instrumented */
|
|
52
55
|
const createWalletProviderFromSolanaStandardWallet = ({ dynamicClient, walletStandardWallet }) => {
|
|
53
56
|
const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);
|
|
54
57
|
const walletProviderType = _dynamic_labs_sdk_api_core.WalletProviderEnum.BrowserExtension;
|
|
@@ -185,6 +188,7 @@ const createWalletProviderFromSolanaStandardWallet = ({ dynamicClient, walletSta
|
|
|
185
188
|
|
|
186
189
|
//#endregion
|
|
187
190
|
//#region src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.ts
|
|
191
|
+
/** @not-instrumented */
|
|
188
192
|
const hasAllRequiredFeatures = (wallet) => {
|
|
189
193
|
return Boolean(wallet.features?.["standard:events"] && wallet.features?.["standard:connect"] && wallet.features?.["solana:signTransaction"] && wallet.features?.["solana:signMessage"]);
|
|
190
194
|
};
|
|
@@ -199,6 +203,7 @@ const SOLANA_WALLET_STANDARD_EXTENSION_KEY = "solanaWalletStandard";
|
|
|
199
203
|
* automatically detecting and registering compatible wallets for use with the Dynamic SDK.
|
|
200
204
|
*
|
|
201
205
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
206
|
+
* @not-instrumented
|
|
202
207
|
*/
|
|
203
208
|
const addSolanaWalletStandardExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
|
|
204
209
|
if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY }, client)) return;
|
|
@@ -230,4 +235,4 @@ Object.defineProperty(exports, 'addSolanaWalletStandardExtension', {
|
|
|
230
235
|
return addSolanaWalletStandardExtension;
|
|
231
236
|
}
|
|
232
237
|
});
|
|
233
|
-
//# sourceMappingURL=addSolanaWalletStandardExtension-
|
|
238
|
+
//# sourceMappingURL=addSolanaWalletStandardExtension-DfSdWJZm.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addSolanaWalletStandardExtension-DfSdWJZm.cjs.js","names":["WalletProviderEnum","connect: SolanaWalletProvider['connect']","getActiveNetworkId: SolanaWalletProvider['getActiveNetworkId']","getConnectedAddresses: SolanaWalletProvider['getConnectedAddresses']","signAllTransactions: SolanaWalletProvider['signAllTransactions']","isVersionedTransaction","VersionedTransaction","Transaction","signAndSendTransaction: SolanaWalletProvider['signAndSendTransaction']","signMessage: SolanaWalletProvider['signMessage']","signTransaction: SolanaWalletProvider['signTransaction']","switchActiveNetwork: SolanaWalletProvider['switchActiveNetwork']","terminate: SolanaWalletProvider['terminate']","solanaExecuteCheckoutTransaction","solanaTransferAmount","WalletProviderPriority"],"sources":["../src/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.ts","../src/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.ts","../src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.ts","../src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.ts","../src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.ts"],"sourcesContent":["import type { DynamicClient, WalletAccount } from '@dynamic-labs-sdk/client';\nimport { getActiveNetworkData } from '@dynamic-labs-sdk/client';\n\ntype GetActiveNetworkClusterParams = {\n walletAccount: WalletAccount;\n};\n\n/** @not-instrumented */\nexport const getActiveNetworkCluster = async (\n { walletAccount }: GetActiveNetworkClusterParams,\n client: DynamicClient\n): Promise<`solana:${string}` | undefined> => {\n const { networkData } = await getActiveNetworkData({ walletAccount }, client);\n\n if (!networkData?.cluster) {\n return;\n }\n\n return `solana:${networkData.cluster}`;\n};\n","import type { Wallet } from '@wallet-standard/base';\nimport type {\n SignAndSendTransactionFeature,\n SignMessageFeature,\n SignTransactionFeature,\n} from '@wallet-standard/experimental-features';\nimport type {\n StandardConnectFeature,\n StandardDisconnectFeature,\n StandardEventsFeature,\n} from '@wallet-standard/features';\n\ntype WalletStandardFeatures = {\n 'solana:signAndSendTransaction': SignAndSendTransactionFeature['experimental:signAndSendTransaction'];\n 'solana:signMessage': SignMessageFeature['experimental:signMessage'];\n 'solana:signTransaction': SignTransactionFeature['experimental:signTransaction'];\n} & StandardConnectFeature &\n Partial<StandardDisconnectFeature> &\n StandardEventsFeature;\n\n/** @not-instrumented */\nexport const getFeaturesForSolanaStandardWallet = (wallet: Wallet) => {\n return wallet.features as WalletStandardFeatures;\n};\n","import {\n type DynamicClient,\n assertWalletAccountSigningAvailability,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n bufferToBase64,\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport type { Wallet as WalletStandardWallet } from '@wallet-standard/base';\nimport type { SignTransactionInput } from '@wallet-standard/experimental-features';\nimport bs58 from 'bs58';\n\nimport type { SolanaWalletProvider } from '../../../SolanaWalletProvider.types';\nimport { isVersionedTransaction } from '../../../utils/isVersionedTransaction';\nimport { solanaExecuteCheckoutTransaction } from '../../../utils/solanaExecuteCheckoutTransaction';\nimport { solanaTransferAmount } from '../../../utils/solanaTransferAmount';\nimport { getActiveNetworkCluster } from '../getActiveNetworkCluster';\nimport { getFeaturesForSolanaStandardWallet } from '../getFeaturesForSolanaStandardWallet';\n\ntype CreateWalletProviderFromSolanaStandardWalletParams = {\n dynamicClient: DynamicClient;\n walletStandardWallet: WalletStandardWallet;\n};\n\n/** @not-instrumented */\nexport const createWalletProviderFromSolanaStandardWallet = ({\n dynamicClient,\n walletStandardWallet,\n}: CreateWalletProviderFromSolanaStandardWalletParams): SolanaWalletProvider => {\n const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);\n\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain: 'SOL',\n displayName: walletStandardWallet.name,\n walletProviderType,\n });\n\n const connect: SolanaWalletProvider['connect'] = async () => {\n const autoConnectedAccounts = walletStandardWallet.accounts;\n\n // some wallets like Farcaster will auto inject the account into the wallet object\n // instead of returning it from the connect method\n // so we need to check for that first\n if (\n autoConnectedAccounts?.length &&\n autoConnectedAccounts[0].publicKey &&\n autoConnectedAccounts[0].address\n ) {\n return {\n addresses: [\n {\n address: autoConnectedAccounts[0].address,\n publicKey: autoConnectedAccounts[0].publicKey.toString(),\n },\n ],\n };\n }\n\n const connectMethod = features['standard:connect']?.connect;\n\n assertDefined(connectMethod, 'connect method not found in wallet features');\n\n const result = await connectMethod({ silent: false });\n\n return {\n addresses: result.accounts?.map((account) => ({\n address: account.address,\n publicKey: account.publicKey?.toString(),\n })),\n };\n };\n const disconnectFeature = features['standard:disconnect']?.disconnect;\n\n const getActiveNetworkId: SolanaWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const getCurrentAccount = async () => {\n if (!isConnected() && connect) {\n await connect();\n }\n\n const account = walletStandardWallet.accounts?.[0];\n\n assertDefined(account, 'No connected accounts found');\n\n return account;\n };\n\n const isConnected = (): boolean => {\n return walletStandardWallet.accounts?.length > 0;\n };\n\n const getConnectedAddresses: SolanaWalletProvider['getConnectedAddresses'] =\n async () => {\n if (!isConnected() && connect) {\n await connect();\n }\n\n return {\n addresses: walletStandardWallet.accounts.map(\n (account) => account.address\n ),\n };\n };\n\n const signAllTransactions: SolanaWalletProvider['signAllTransactions'] =\n async ({ transactions, walletAccount }) => {\n const signTransactionMethod =\n features['solana:signTransaction']?.signTransaction;\n\n assertDefined(\n signTransactionMethod,\n 'signTransaction method not found in wallet features'\n );\n\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const account = await getCurrentAccount();\n\n const chain = await getActiveNetworkCluster(\n { walletAccount },\n dynamicClient\n );\n assertDefined(chain, 'Could not get active chain for wallet account');\n\n const transactionsInput: SignTransactionInput[] = transactions.map(\n (transaction) => ({\n account,\n chain,\n transaction: transaction.serialize({\n requireAllSignatures: false,\n }) as Uint8Array<ArrayBufferLike>,\n })\n );\n\n const signTransactionResult = await signTransactionMethod(\n ...transactionsInput\n );\n\n const signedTransactions = signTransactionResult.map(\n ({ signedTransaction }, index) => {\n const inputTransaction = transactions[index];\n type T = typeof inputTransaction;\n\n if (isVersionedTransaction(inputTransaction)) {\n return VersionedTransaction.deserialize(signedTransaction) as T;\n }\n return Transaction.from(signedTransaction) as T;\n }\n );\n\n return { signedTransactions };\n };\n\n const signAndSendTransaction: SolanaWalletProvider['signAndSendTransaction'] =\n async ({ transaction, walletAccount }) => {\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const signAndSendTransactionMethod =\n features['solana:signAndSendTransaction']?.signAndSendTransaction;\n\n assertDefined(\n signAndSendTransactionMethod,\n 'signAndSendTransaction method not found in wallet features'\n );\n\n const account = await getCurrentAccount();\n\n const chain = await getActiveNetworkCluster(\n { walletAccount },\n dynamicClient\n );\n assertDefined(chain, 'Could not get active chain for wallet account');\n\n const signedTransactions = await signAndSendTransactionMethod({\n account,\n chain,\n transaction: transaction.serialize({\n requireAllSignatures: false,\n }) as Uint8Array<ArrayBufferLike>,\n });\n\n const [{ signature }] = signedTransactions;\n\n return { signature: bs58.encode(signature) };\n };\n\n const signMessage: SolanaWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const signMessageMethod = features['solana:signMessage']?.signMessage;\n\n assertDefined(\n signMessageMethod,\n 'signMessage method not found in wallet features'\n );\n\n assertDefined(walletAccount, 'Wallet account not found');\n\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const encodedMessage = new TextEncoder().encode(message);\n\n const account = await getCurrentAccount();\n\n const messages = await signMessageMethod({\n account,\n message: encodedMessage,\n });\n\n return { signature: bufferToBase64(messages[0].signature) };\n };\n\n const signTransaction: SolanaWalletProvider['signTransaction'] = async ({\n transaction,\n walletAccount,\n }) => {\n const signedTransactions = await signAllTransactions({\n transactions: [transaction],\n walletAccount,\n });\n\n return { signedTransaction: signedTransactions.signedTransactions[0] };\n };\n\n const switchActiveNetwork: SolanaWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const { getEventEmitter, cleanupEventEmitter } =\n createWalletProviderEventEmitter<VoidFunction>({\n removeEventListeners: ({ setupReturnValue }) => {\n assertDefined(setupReturnValue, 'Setup return value not defined');\n\n setupReturnValue();\n },\n\n setupEventListeners: ({ handleAccountsChanged }) => {\n const eventsFeature = features['standard:events'];\n\n return eventsFeature.on('change', ({ accounts }) => {\n handleAccountsChanged({\n addresses: accounts?.map((account) => account.address) ?? [],\n });\n });\n },\n\n supportedEvents: ['accountsChanged'],\n });\n\n const terminate: SolanaWalletProvider['terminate'] = async () => {\n cleanupEventEmitter();\n };\n\n const walletProvider: SolanaWalletProvider = {\n chain: 'SOL',\n connect,\n disconnect: disconnectFeature,\n get events() {\n return getEventEmitter();\n },\n executeCheckoutTransaction: (args) =>\n solanaExecuteCheckoutTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(walletStandardWallet.name),\n key,\n metadata: {\n displayName: walletStandardWallet.name,\n icon: walletStandardWallet.icon,\n },\n signAllTransactions,\n signAndSendTransaction,\n signMessage,\n signTransaction,\n switchActiveNetwork,\n terminate,\n transferAmount: (args) => solanaTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n\n return walletProvider;\n};\n","import type { Wallet } from '@wallet-standard/base';\n\n/** @not-instrumented */\nexport const hasAllRequiredFeatures = (wallet: Wallet): boolean => {\n return Boolean(\n wallet.features?.['standard:events'] &&\n wallet.features?.['standard:connect'] &&\n wallet.features?.['solana:signTransaction'] &&\n wallet.features?.['solana:signMessage']\n );\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport { getWallets } from '@wallet-standard/app';\n\nimport { registerSolanaNetworkProviderBuilder } from '../../registerSolanaNetworkProviderBuilder';\nimport { createWalletProviderFromSolanaStandardWallet } from '../utils/createWalletProviderFromSolanaStandardWallet';\nimport { hasAllRequiredFeatures } from '../utils/hasAllRequiredFeatures';\n\nexport const SOLANA_WALLET_STANDARD_EXTENSION_KEY = 'solanaWalletStandard';\n\n/**\n * Adds the Solana Wallet Standard extension to the Dynamic client.\n *\n * This extension enables integration with wallets that implement the Solana Wallet Standard,\n * automatically detecting and registering compatible wallets for use with the Dynamic SDK.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @not-instrumented\n */\nexport const addSolanaWalletStandardExtension = (\n client = getDefaultClient()\n): void => {\n if (\n hasExtension({ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension(\n { extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY },\n client\n );\n\n registerSolanaNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletStandardWallets = getWallets()\n .get()\n .filter(hasAllRequiredFeatures);\n\n walletStandardWallets.forEach((walletStandardWallet) => {\n const walletProvider = createWalletProviderFromSolanaStandardWallet({\n dynamicClient: client,\n walletStandardWallet,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,\n walletProvider,\n });\n });\n};\n"],"mappings":"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"}
|
package/dist/{addWaasSolanaExtension-cV_IV402.cjs.js → addWaasSolanaExtension-BM8g8aGj.cjs.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_addSolanaWalletStandardExtension = require('./addSolanaWalletStandardExtension-
|
|
2
|
-
const require_solanaTransferAmount = require('./solanaTransferAmount-
|
|
1
|
+
const require_addSolanaWalletStandardExtension = require('./addSolanaWalletStandardExtension-DfSdWJZm.cjs.js');
|
|
2
|
+
const require_solanaTransferAmount = require('./solanaTransferAmount-DTP1mG1H.cjs.js');
|
|
3
3
|
let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
|
|
4
4
|
let _solana_web3_js = require("@solana/web3.js");
|
|
5
5
|
let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
|
|
@@ -33,6 +33,7 @@ var SponsorTransactionError = class extends _dynamic_labs_sdk_client.BaseError {
|
|
|
33
33
|
* @param client - The Dynamic client instance used for API calls and state access
|
|
34
34
|
* @returns The sponsored transaction as a VersionedTransaction
|
|
35
35
|
* @throws {SponsorTransactionError} If the API response is missing the transaction field
|
|
36
|
+
* @not-instrumented
|
|
36
37
|
*/
|
|
37
38
|
const sponsorTransaction = async ({ transaction }, client) => {
|
|
38
39
|
const core = (0, _dynamic_labs_sdk_client_core.getCore)(client);
|
|
@@ -58,6 +59,7 @@ const sponsorTransaction = async ({ transaction }, client) => {
|
|
|
58
59
|
|
|
59
60
|
//#endregion
|
|
60
61
|
//#region src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.ts
|
|
62
|
+
/** @not-instrumented */
|
|
61
63
|
const createWalletProviderForWaasSolana = (sdkClient) => {
|
|
62
64
|
const chain = "SOL";
|
|
63
65
|
const walletProviderType = _dynamic_labs_sdk_api_core.WalletProviderEnum.EmbeddedWallet;
|
|
@@ -173,6 +175,7 @@ const WAAS_SOLANA_EXTENSION_KEY = "waasSolana";
|
|
|
173
175
|
* allowing users to have wallets managed by Dynamic's infrastructure.
|
|
174
176
|
*
|
|
175
177
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
178
|
+
* @not-instrumented
|
|
176
179
|
*/
|
|
177
180
|
const addWaasSolanaExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
|
|
178
181
|
if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: WAAS_SOLANA_EXTENSION_KEY }, client)) return;
|
|
@@ -199,4 +202,4 @@ Object.defineProperty(exports, 'addWaasSolanaExtension', {
|
|
|
199
202
|
return addWaasSolanaExtension;
|
|
200
203
|
}
|
|
201
204
|
});
|
|
202
|
-
//# sourceMappingURL=addWaasSolanaExtension-
|
|
205
|
+
//# sourceMappingURL=addWaasSolanaExtension-BM8g8aGj.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addWaasSolanaExtension-BM8g8aGj.cjs.js","names":["BaseError","isVersionedTransaction","VersionedTransaction","chain: Chain","WalletProviderEnum","DYNAMIC_WAAS_METADATA","getActiveNetworkId: WaasSolanaWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasSolanaWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasSolanaWalletProvider['getConnectedAddresses']","signAndSendTransaction: WaasSolanaWalletProvider['signAndSendTransaction']","getSolanaConnection","signAndSendSponsoredTransaction: WaasSolanaWalletProvider['signAndSendSponsoredTransaction']","signTransaction: WaasSolanaWalletProvider['signTransaction']","isVersionedTransaction","PublicKey","signAllTransactions: WaasSolanaWalletProvider['signAllTransactions']","signMessage: WaasSolanaWalletProvider['signMessage']","solanaExecuteCheckoutTransaction","solanaTransferAmount","WalletProviderPriority"],"sources":["../src/errors/SponsorTransactionError/SponsorTransactionError.ts","../src/waas/utils/sponsorTransaction/sponsorTransaction.ts","../src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.ts","../src/waas/addWaasSolanaExtension/addWaasSolanaExtension.ts"],"sourcesContent":["import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class SponsorTransactionError extends BaseError {\n constructor(cause?: Error | null) {\n super({\n cause: cause ?? null,\n code: 'sponsor_transaction_error',\n docsUrl: null,\n name: 'SponsorTransactionError',\n shortMessage: 'Failed to sponsor transaction',\n });\n }\n}\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n createApiClient,\n getBuffer,\n getCore,\n} from '@dynamic-labs-sdk/client/core';\nimport type { Transaction } from '@solana/web3.js';\nimport { VersionedTransaction } from '@solana/web3.js';\n\nimport { SponsorTransactionError } from '../../../errors/SponsorTransactionError/SponsorTransactionError';\nimport { isVersionedTransaction } from '../../../utils/isVersionedTransaction';\n\ntype SponsorTransactionParams = {\n transaction: Transaction | VersionedTransaction;\n};\n\n/**\n * Sponsors a Solana transaction using the Dynamic backend.\n *\n * Sends the transaction to Dynamic's sponsorship API, which replaces the\n * fee payer with a sponsored account. This allows users to execute\n * transactions without holding SOL for gas fees.\n *\n * @param params - The parameters object containing the transaction\n * @param params.transaction - The Solana transaction to sponsor\n * @param client - The Dynamic client instance used for API calls and state access\n * @returns The sponsored transaction as a VersionedTransaction\n * @throws {SponsorTransactionError} If the API response is missing the transaction field\n * @not-instrumented\n */\nexport const sponsorTransaction = async (\n { transaction }: SponsorTransactionParams,\n client: DynamicClient\n): Promise<VersionedTransaction> => {\n const core = getCore(client);\n\n const serialized = isVersionedTransaction(transaction)\n ? transaction.serialize()\n : transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n });\n\n const base64Transaction = getBuffer()\n .from(serialized as Uint8Array)\n .toString('base64');\n\n const apiClient = createApiClient({}, client);\n\n let data;\n\n try {\n data = await apiClient.sponsorSVMTransaction({\n environmentId: core.environmentId,\n sponsorSVMTransactionRequest: {\n transaction: base64Transaction,\n },\n });\n } catch (error) {\n const cause = error instanceof Error ? error : null;\n throw new SponsorTransactionError(cause);\n }\n\n if (!data.transaction) {\n throw new SponsorTransactionError();\n }\n\n const buffer = getBuffer().from(data.transaction, 'base64');\n\n return VersionedTransaction.deserialize(new Uint8Array(buffer));\n};\n","import {\n type Chain,\n type DynamicClient,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getBuffer,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n DYNAMIC_WAAS_METADATA,\n createWaasProvider,\n getAllUserWaasAddressesForChain,\n} from '@dynamic-labs-sdk/client/waas/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { PublicKey } from '@solana/web3.js';\n\nimport { getSolanaConnection } from '../../../getSolanaConnection';\nimport { isVersionedTransaction } from '../../../utils/isVersionedTransaction';\nimport { solanaExecuteCheckoutTransaction } from '../../../utils/solanaExecuteCheckoutTransaction';\nimport { solanaTransferAmount } from '../../../utils/solanaTransferAmount';\nimport type { WaasSolanaWalletProvider } from '../../WaasSolanaWalletProvider.types';\nimport { sponsorTransaction } from '../sponsorTransaction';\n\n/** @not-instrumented */\nexport const createWalletProviderForWaasSolana = (\n sdkClient: DynamicClient\n): WaasSolanaWalletProvider => {\n const chain: Chain = 'SOL';\n\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({ chain, sdkClient });\n\n const getActiveNetworkId: WaasSolanaWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: sdkClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WaasSolanaWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: sdkClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasSolanaWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasSolanaAddresses = getAllUserWaasAddressesForChain(\n { chain },\n sdkClient\n );\n\n return {\n addresses: waasSolanaAddresses,\n };\n };\n\n const signAndSendTransaction: WaasSolanaWalletProvider['signAndSendTransaction'] =\n async ({ transaction, walletAccount, options }) => {\n const { signedTransaction } = await signTransaction({\n transaction,\n walletAccount,\n });\n\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n sdkClient\n );\n\n assertDefined(networkData, 'Network data is required');\n\n const connection = getSolanaConnection({ networkData });\n\n const rawTransaction = signedTransaction.serialize();\n\n const signature = await connection.sendRawTransaction(\n rawTransaction,\n options\n );\n\n return { signature };\n };\n\n const signAndSendSponsoredTransaction: WaasSolanaWalletProvider['signAndSendSponsoredTransaction'] =\n async ({ transaction, walletAccount, options }) => {\n const sponsoredTx = await sponsorTransaction({ transaction }, sdkClient);\n\n const { signedTransaction } = await signTransaction({\n transaction: sponsoredTx,\n walletAccount,\n });\n\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n sdkClient\n );\n\n assertDefined(networkData, 'Network data is required');\n\n const connection = getSolanaConnection({ networkData });\n\n const rawTransaction = signedTransaction.serialize();\n\n // Skip preflight simulation to avoid false\n // \"Attempt to debit an account but found no record of a prior credit\"\n // errors — the fee payer has been replaced but preflight may still reject it\n const signature = await connection.sendRawTransaction(rawTransaction, {\n skipPreflight: true,\n ...options,\n });\n\n return { signature };\n };\n\n const signTransaction: WaasSolanaWalletProvider['signTransaction'] = async ({\n transaction,\n walletAccount,\n }) => {\n const messageBytes = isVersionedTransaction(transaction)\n ? transaction.message.serialize()\n : transaction.serializeMessage();\n\n const serializedTransaction = getBuffer()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .from(messageBytes as any)\n .toString('hex');\n\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n sdkClient\n );\n\n const { signature } = await waasProvider.signSerializedTransaction({\n chainId: networkData?.networkId,\n serializedTransaction,\n walletAccount,\n });\n\n const publicKey = new PublicKey(walletAccount.address);\n\n transaction.addSignature(\n publicKey,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getBuffer().from(signature, 'hex') as any\n );\n\n transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: true,\n });\n\n return { signedTransaction: transaction };\n };\n\n const signAllTransactions: WaasSolanaWalletProvider['signAllTransactions'] =\n async ({ transactions, walletAccount }) => {\n const signedTransactions = await Promise.all(\n transactions.map(async (transaction) => {\n const { signedTransaction } = await signTransaction({\n transaction,\n walletAccount,\n });\n\n return signedTransaction;\n })\n );\n\n return { signedTransactions };\n };\n\n const signMessage: WaasSolanaWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n return waasProvider.signMessage({ message, walletAccount });\n };\n\n return {\n ...waasProvider,\n chain,\n executeCheckoutTransaction: (args) =>\n solanaExecuteCheckoutTransaction(args, sdkClient),\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(DYNAMIC_WAAS_METADATA.displayName),\n key,\n metadata: {\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n icon: DYNAMIC_WAAS_METADATA.icon,\n },\n signAllTransactions,\n signAndSendSponsoredTransaction,\n signAndSendTransaction,\n signMessage,\n signTransaction,\n switchActiveNetwork,\n transferAmount: (args) => solanaTransferAmount(args, sdkClient),\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerSolanaNetworkProviderBuilder } from '../../registerSolanaNetworkProviderBuilder';\nimport { createWalletProviderForWaasSolana } from '../utils/createWalletProviderForWaasSolana';\n\nexport const WAAS_SOLANA_EXTENSION_KEY = 'waasSolana';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) Solana extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for Solana blockchain,\n * allowing users to have wallets managed by Dynamic's infrastructure.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @not-instrumented\n */\nexport const addWaasSolanaExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_SOLANA_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_SOLANA_EXTENSION_KEY }, client);\n registerSolanaNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasSolana(client);\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n"],"mappings":"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"}
|
package/dist/{addWaasSolanaExtension-DpaXrLfj.esm.js → addWaasSolanaExtension-DLCqqCWS.esm.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as getSolanaConnection, i as solanaExecuteCheckoutTransaction, l as registerSolanaNetworkProviderBuilder, s as isVersionedTransaction, t as solanaTransferAmount } from "./solanaTransferAmount-
|
|
1
|
+
import { c as getSolanaConnection, i as solanaExecuteCheckoutTransaction, l as registerSolanaNetworkProviderBuilder, s as isVersionedTransaction, t as solanaTransferAmount } from "./solanaTransferAmount-NfRwfMZ7.esm.js";
|
|
2
2
|
import { WalletProviderPriority, assertDefined, createApiClient, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getBuffer, getCore, getDefaultClient, getWalletProviderRegistry, hasExtension, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
|
|
3
3
|
import { PublicKey, VersionedTransaction } from "@solana/web3.js";
|
|
4
4
|
import { BaseError, getActiveNetworkData } from "@dynamic-labs-sdk/client";
|
|
@@ -32,6 +32,7 @@ var SponsorTransactionError = class extends BaseError {
|
|
|
32
32
|
* @param client - The Dynamic client instance used for API calls and state access
|
|
33
33
|
* @returns The sponsored transaction as a VersionedTransaction
|
|
34
34
|
* @throws {SponsorTransactionError} If the API response is missing the transaction field
|
|
35
|
+
* @not-instrumented
|
|
35
36
|
*/
|
|
36
37
|
const sponsorTransaction = async ({ transaction }, client) => {
|
|
37
38
|
const core = getCore(client);
|
|
@@ -57,6 +58,7 @@ const sponsorTransaction = async ({ transaction }, client) => {
|
|
|
57
58
|
|
|
58
59
|
//#endregion
|
|
59
60
|
//#region src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.ts
|
|
61
|
+
/** @not-instrumented */
|
|
60
62
|
const createWalletProviderForWaasSolana = (sdkClient) => {
|
|
61
63
|
const chain = "SOL";
|
|
62
64
|
const walletProviderType = WalletProviderEnum.EmbeddedWallet;
|
|
@@ -172,6 +174,7 @@ const WAAS_SOLANA_EXTENSION_KEY = "waasSolana";
|
|
|
172
174
|
* allowing users to have wallets managed by Dynamic's infrastructure.
|
|
173
175
|
*
|
|
174
176
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
177
|
+
* @not-instrumented
|
|
175
178
|
*/
|
|
176
179
|
const addWaasSolanaExtension = (client = getDefaultClient()) => {
|
|
177
180
|
if (hasExtension({ extensionKey: WAAS_SOLANA_EXTENSION_KEY }, client)) return;
|
|
@@ -187,4 +190,4 @@ const addWaasSolanaExtension = (client = getDefaultClient()) => {
|
|
|
187
190
|
|
|
188
191
|
//#endregion
|
|
189
192
|
export { SponsorTransactionError as n, addWaasSolanaExtension as t };
|
|
190
|
-
//# sourceMappingURL=addWaasSolanaExtension-
|
|
193
|
+
//# sourceMappingURL=addWaasSolanaExtension-DLCqqCWS.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addWaasSolanaExtension-DLCqqCWS.esm.js","names":["chain: Chain","getActiveNetworkId: WaasSolanaWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasSolanaWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasSolanaWalletProvider['getConnectedAddresses']","signAndSendTransaction: WaasSolanaWalletProvider['signAndSendTransaction']","signAndSendSponsoredTransaction: WaasSolanaWalletProvider['signAndSendSponsoredTransaction']","signTransaction: WaasSolanaWalletProvider['signTransaction']","signAllTransactions: WaasSolanaWalletProvider['signAllTransactions']","signMessage: WaasSolanaWalletProvider['signMessage']"],"sources":["../src/errors/SponsorTransactionError/SponsorTransactionError.ts","../src/waas/utils/sponsorTransaction/sponsorTransaction.ts","../src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.ts","../src/waas/addWaasSolanaExtension/addWaasSolanaExtension.ts"],"sourcesContent":["import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class SponsorTransactionError extends BaseError {\n constructor(cause?: Error | null) {\n super({\n cause: cause ?? null,\n code: 'sponsor_transaction_error',\n docsUrl: null,\n name: 'SponsorTransactionError',\n shortMessage: 'Failed to sponsor transaction',\n });\n }\n}\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n createApiClient,\n getBuffer,\n getCore,\n} from '@dynamic-labs-sdk/client/core';\nimport type { Transaction } from '@solana/web3.js';\nimport { VersionedTransaction } from '@solana/web3.js';\n\nimport { SponsorTransactionError } from '../../../errors/SponsorTransactionError/SponsorTransactionError';\nimport { isVersionedTransaction } from '../../../utils/isVersionedTransaction';\n\ntype SponsorTransactionParams = {\n transaction: Transaction | VersionedTransaction;\n};\n\n/**\n * Sponsors a Solana transaction using the Dynamic backend.\n *\n * Sends the transaction to Dynamic's sponsorship API, which replaces the\n * fee payer with a sponsored account. This allows users to execute\n * transactions without holding SOL for gas fees.\n *\n * @param params - The parameters object containing the transaction\n * @param params.transaction - The Solana transaction to sponsor\n * @param client - The Dynamic client instance used for API calls and state access\n * @returns The sponsored transaction as a VersionedTransaction\n * @throws {SponsorTransactionError} If the API response is missing the transaction field\n * @not-instrumented\n */\nexport const sponsorTransaction = async (\n { transaction }: SponsorTransactionParams,\n client: DynamicClient\n): Promise<VersionedTransaction> => {\n const core = getCore(client);\n\n const serialized = isVersionedTransaction(transaction)\n ? transaction.serialize()\n : transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n });\n\n const base64Transaction = getBuffer()\n .from(serialized as Uint8Array)\n .toString('base64');\n\n const apiClient = createApiClient({}, client);\n\n let data;\n\n try {\n data = await apiClient.sponsorSVMTransaction({\n environmentId: core.environmentId,\n sponsorSVMTransactionRequest: {\n transaction: base64Transaction,\n },\n });\n } catch (error) {\n const cause = error instanceof Error ? error : null;\n throw new SponsorTransactionError(cause);\n }\n\n if (!data.transaction) {\n throw new SponsorTransactionError();\n }\n\n const buffer = getBuffer().from(data.transaction, 'base64');\n\n return VersionedTransaction.deserialize(new Uint8Array(buffer));\n};\n","import {\n type Chain,\n type DynamicClient,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getBuffer,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n DYNAMIC_WAAS_METADATA,\n createWaasProvider,\n getAllUserWaasAddressesForChain,\n} from '@dynamic-labs-sdk/client/waas/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { PublicKey } from '@solana/web3.js';\n\nimport { getSolanaConnection } from '../../../getSolanaConnection';\nimport { isVersionedTransaction } from '../../../utils/isVersionedTransaction';\nimport { solanaExecuteCheckoutTransaction } from '../../../utils/solanaExecuteCheckoutTransaction';\nimport { solanaTransferAmount } from '../../../utils/solanaTransferAmount';\nimport type { WaasSolanaWalletProvider } from '../../WaasSolanaWalletProvider.types';\nimport { sponsorTransaction } from '../sponsorTransaction';\n\n/** @not-instrumented */\nexport const createWalletProviderForWaasSolana = (\n sdkClient: DynamicClient\n): WaasSolanaWalletProvider => {\n const chain: Chain = 'SOL';\n\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({ chain, sdkClient });\n\n const getActiveNetworkId: WaasSolanaWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: sdkClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WaasSolanaWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: sdkClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasSolanaWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasSolanaAddresses = getAllUserWaasAddressesForChain(\n { chain },\n sdkClient\n );\n\n return {\n addresses: waasSolanaAddresses,\n };\n };\n\n const signAndSendTransaction: WaasSolanaWalletProvider['signAndSendTransaction'] =\n async ({ transaction, walletAccount, options }) => {\n const { signedTransaction } = await signTransaction({\n transaction,\n walletAccount,\n });\n\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n sdkClient\n );\n\n assertDefined(networkData, 'Network data is required');\n\n const connection = getSolanaConnection({ networkData });\n\n const rawTransaction = signedTransaction.serialize();\n\n const signature = await connection.sendRawTransaction(\n rawTransaction,\n options\n );\n\n return { signature };\n };\n\n const signAndSendSponsoredTransaction: WaasSolanaWalletProvider['signAndSendSponsoredTransaction'] =\n async ({ transaction, walletAccount, options }) => {\n const sponsoredTx = await sponsorTransaction({ transaction }, sdkClient);\n\n const { signedTransaction } = await signTransaction({\n transaction: sponsoredTx,\n walletAccount,\n });\n\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n sdkClient\n );\n\n assertDefined(networkData, 'Network data is required');\n\n const connection = getSolanaConnection({ networkData });\n\n const rawTransaction = signedTransaction.serialize();\n\n // Skip preflight simulation to avoid false\n // \"Attempt to debit an account but found no record of a prior credit\"\n // errors — the fee payer has been replaced but preflight may still reject it\n const signature = await connection.sendRawTransaction(rawTransaction, {\n skipPreflight: true,\n ...options,\n });\n\n return { signature };\n };\n\n const signTransaction: WaasSolanaWalletProvider['signTransaction'] = async ({\n transaction,\n walletAccount,\n }) => {\n const messageBytes = isVersionedTransaction(transaction)\n ? transaction.message.serialize()\n : transaction.serializeMessage();\n\n const serializedTransaction = getBuffer()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .from(messageBytes as any)\n .toString('hex');\n\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n sdkClient\n );\n\n const { signature } = await waasProvider.signSerializedTransaction({\n chainId: networkData?.networkId,\n serializedTransaction,\n walletAccount,\n });\n\n const publicKey = new PublicKey(walletAccount.address);\n\n transaction.addSignature(\n publicKey,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getBuffer().from(signature, 'hex') as any\n );\n\n transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: true,\n });\n\n return { signedTransaction: transaction };\n };\n\n const signAllTransactions: WaasSolanaWalletProvider['signAllTransactions'] =\n async ({ transactions, walletAccount }) => {\n const signedTransactions = await Promise.all(\n transactions.map(async (transaction) => {\n const { signedTransaction } = await signTransaction({\n transaction,\n walletAccount,\n });\n\n return signedTransaction;\n })\n );\n\n return { signedTransactions };\n };\n\n const signMessage: WaasSolanaWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n return waasProvider.signMessage({ message, walletAccount });\n };\n\n return {\n ...waasProvider,\n chain,\n executeCheckoutTransaction: (args) =>\n solanaExecuteCheckoutTransaction(args, sdkClient),\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(DYNAMIC_WAAS_METADATA.displayName),\n key,\n metadata: {\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n icon: DYNAMIC_WAAS_METADATA.icon,\n },\n signAllTransactions,\n signAndSendSponsoredTransaction,\n signAndSendTransaction,\n signMessage,\n signTransaction,\n switchActiveNetwork,\n transferAmount: (args) => solanaTransferAmount(args, sdkClient),\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerSolanaNetworkProviderBuilder } from '../../registerSolanaNetworkProviderBuilder';\nimport { createWalletProviderForWaasSolana } from '../utils/createWalletProviderForWaasSolana';\n\nexport const WAAS_SOLANA_EXTENSION_KEY = 'waasSolana';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) Solana extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for Solana blockchain,\n * allowing users to have wallets managed by Dynamic's infrastructure.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @not-instrumented\n */\nexport const addWaasSolanaExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_SOLANA_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_SOLANA_EXTENSION_KEY }, client);\n registerSolanaNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasSolana(client);\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSolanaConnection.d.ts","sourceRoot":"","sources":["../../src/getSolanaConnection/getSolanaConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,KAAK,0BAA0B,GAAG;IAChC,kBAAkB,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC;IACnD,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"getSolanaConnection.d.ts","sourceRoot":"","sources":["../../src/getSolanaConnection/getSolanaConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,KAAK,0BAA0B,GAAG;IAChC,kBAAkB,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC;IACnD,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,mBAAmB,yCAG7B,0BAA0B,eAE5B,CAAC"}
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const require_addSolanaWalletStandardExtension = require('./addSolanaWalletStandardExtension-
|
|
2
|
-
const require_solanaTransferAmount = require('./solanaTransferAmount-
|
|
3
|
-
const require_addWaasSolanaExtension = require('./addWaasSolanaExtension-
|
|
1
|
+
const require_addSolanaWalletStandardExtension = require('./addSolanaWalletStandardExtension-DfSdWJZm.cjs.js');
|
|
2
|
+
const require_solanaTransferAmount = require('./solanaTransferAmount-DTP1mG1H.cjs.js');
|
|
3
|
+
const require_addWaasSolanaExtension = require('./addWaasSolanaExtension-BM8g8aGj.cjs.js');
|
|
4
4
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
|
5
5
|
let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
|
|
6
6
|
let _solana_web3_js = require("@solana/web3.js");
|
|
@@ -22,6 +22,7 @@ tweetnacl = require_addSolanaWalletStandardExtension.__toESM(tweetnacl);
|
|
|
22
22
|
* including standard wallets and embedded wallets managed by Dynamic's infrastructure.
|
|
23
23
|
*
|
|
24
24
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
25
|
+
* @not-instrumented
|
|
25
26
|
*/
|
|
26
27
|
const addSolanaExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
|
|
27
28
|
require_addSolanaWalletStandardExtension.addSolanaWalletStandardExtension(client);
|
|
@@ -35,6 +36,7 @@ const addSolanaExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaul
|
|
|
35
36
|
*
|
|
36
37
|
* @param networkProvider - The network provider to check.
|
|
37
38
|
* @returns True if the network provider is a Solana network provider, false otherwise.
|
|
39
|
+
* @not-instrumented
|
|
38
40
|
*/
|
|
39
41
|
const isSolanaNetworkProvider = (networkProvider) => networkProvider.chain === "SOL";
|
|
40
42
|
|
|
@@ -57,6 +59,7 @@ const sleep = (ms) => new Promise((resolve) => {
|
|
|
57
59
|
* @param params.nativeTokenPriceUsd - Optional USD price of SOL for fee conversion.
|
|
58
60
|
* @returns Fee data in lamports and human-readable SOL format.
|
|
59
61
|
* @throws {FeeEstimationFailedError} If fee retrieval fails after retries.
|
|
62
|
+
* @not-instrumented
|
|
60
63
|
*/
|
|
61
64
|
const calculateSolanaTransactionFee = async ({ transaction, networkData, nativeTokenPriceUsd }) => {
|
|
62
65
|
try {
|
|
@@ -134,6 +137,7 @@ const calculateSolanaTransactionFee = async ({ transaction, networkData, nativeT
|
|
|
134
137
|
* @throws {InvalidParamError} If wallet account is not a Solana account.
|
|
135
138
|
* @throws {SimulationFailedError} If the simulation API call fails.
|
|
136
139
|
* @throws {FeeEstimationFailedError} If includeFees is true and fee calculation fails.
|
|
140
|
+
* @not-instrumented
|
|
137
141
|
*/
|
|
138
142
|
const simulateSolanaTransaction = async ({ walletAccount, transaction, includeFees = false }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
139
143
|
if (!require_solanaTransferAmount.isSolanaWalletAccount(walletAccount)) throw new _dynamic_labs_sdk_client.InvalidParamError("Wallet account must be a Solana wallet account");
|
|
@@ -318,6 +322,7 @@ const phantomSessionStorageKeySchema = (0, _dynamic_labs_sdk_client_core.createS
|
|
|
318
322
|
* @param params.event - The DynamicEvents event name to broadcast
|
|
319
323
|
* @param params.args - The event arguments to include in the message
|
|
320
324
|
* @param client - The Dynamic client instance
|
|
325
|
+
* @not-instrumented
|
|
321
326
|
*/
|
|
322
327
|
const broadcastPhantomEvent = ({ args, event }, client) => {
|
|
323
328
|
(0, _dynamic_labs_sdk_client_core.getCore)(client).crossTabBroadcast.send({
|
|
@@ -334,6 +339,7 @@ const broadcastPhantomEvent = ({ args, event }, client) => {
|
|
|
334
339
|
* @param params.ourSecretKey - Our base58-encoded secret key
|
|
335
340
|
* @param params.theirPublicKey - Their base58-encoded public key
|
|
336
341
|
* @returns The base58-encoded shared secret
|
|
342
|
+
* @not-instrumented
|
|
337
343
|
*/
|
|
338
344
|
const createNaClSharedSecret = ({ ourSecretKey, theirPublicKey }) => {
|
|
339
345
|
const sharedSecret = tweetnacl.default.box.before(bs58.default.decode(theirPublicKey), bs58.default.decode(ourSecretKey));
|
|
@@ -364,6 +370,7 @@ var PhantomRedirectDecryptionError = class extends _dynamic_labs_sdk_client.Base
|
|
|
364
370
|
* @param params.sharedSecret - The base58-encoded shared secret
|
|
365
371
|
* @returns The decrypted payload object
|
|
366
372
|
* @throws {PhantomRedirectDecryptionError} If decryption fails
|
|
373
|
+
* @not-instrumented
|
|
367
374
|
*/
|
|
368
375
|
const decryptPayload = ({ data, nonce, sharedSecret }) => {
|
|
369
376
|
let decrypted;
|
|
@@ -409,6 +416,7 @@ const getPhantomOriginTab = (0, _dynamic_labs_sdk_client_core.createRuntimeServi
|
|
|
409
416
|
*
|
|
410
417
|
* @param params.url - The redirect URL containing Phantom parameters
|
|
411
418
|
* @returns Object containing the parsed redirect parameters
|
|
419
|
+
* @not-instrumented
|
|
412
420
|
*/
|
|
413
421
|
const parsePhantomRedirectParams = ({ url }) => {
|
|
414
422
|
const searchParams = url.searchParams;
|
|
@@ -505,6 +513,7 @@ const completeAndEmitPhantomRedirectEvent = async ({ args, event }, client) => {
|
|
|
505
513
|
* required encryption parameters (`phantom_encryption_public_key`, `data`,
|
|
506
514
|
* `nonce`) and does not carry an error code either
|
|
507
515
|
* @throws {PhantomRedirectRejectedError} If the user rejected the request in Phantom
|
|
516
|
+
* @not-instrumented
|
|
508
517
|
*/
|
|
509
518
|
const completePhantomRedirect = async ({ url }, client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
|
|
510
519
|
const core = (0, _dynamic_labs_sdk_client_core.getCore)(client);
|
|
@@ -604,6 +613,7 @@ const completePhantomRedirect = async ({ url }, client = (0, _dynamic_labs_sdk_c
|
|
|
604
613
|
* @param params.payload - Optional encrypted payload for signing operations
|
|
605
614
|
* @param params.nonce - Optional nonce for encrypted payload
|
|
606
615
|
* @returns The complete Phantom deep link URL
|
|
616
|
+
* @not-instrumented
|
|
607
617
|
*/
|
|
608
618
|
const buildPhantomDeepLink = ({ appUrl, cluster, dappPublicKey, method, nonce, payload, redirectUrl }) => {
|
|
609
619
|
const url = new URL(`${PHANTOM_DEEPLINK_BASE_URL}/${method}`);
|
|
@@ -624,6 +634,7 @@ const buildPhantomDeepLink = ({ appUrl, cluster, dappPublicKey, method, nonce, p
|
|
|
624
634
|
* @param params.payload - The payload object to encrypt
|
|
625
635
|
* @param params.sharedSecret - The base58-encoded shared secret
|
|
626
636
|
* @returns The encrypted data and nonce, both base58-encoded
|
|
637
|
+
* @not-instrumented
|
|
627
638
|
*/
|
|
628
639
|
const encryptPayload = ({ payload, sharedSecret }) => {
|
|
629
640
|
const nonce = tweetnacl.default.randomBytes(tweetnacl.default.box.nonceLength);
|
|
@@ -642,6 +653,7 @@ const encryptPayload = ({ payload, sharedSecret }) => {
|
|
|
642
653
|
* Generates a new NaCl key pair for encryption.
|
|
643
654
|
*
|
|
644
655
|
* @returns A key pair with base58-encoded public and secret keys
|
|
656
|
+
* @not-instrumented
|
|
645
657
|
*/
|
|
646
658
|
const generateNaClKeyPair = () => {
|
|
647
659
|
const keyPair = tweetnacl.default.box.keyPair();
|
|
@@ -672,6 +684,7 @@ const normalizeCluster = (cluster) => {
|
|
|
672
684
|
*
|
|
673
685
|
* Returns `undefined` if no cluster can be determined; Phantom will use the
|
|
674
686
|
* wallet's default in that case.
|
|
687
|
+
* @not-instrumented
|
|
675
688
|
*/
|
|
676
689
|
const getPhantomCluster = async ({ dynamicClient, walletAccount }) => {
|
|
677
690
|
if (walletAccount) {
|
|
@@ -693,6 +706,7 @@ const getPhantomCluster = async ({ dynamicClient, walletAccount }) => {
|
|
|
693
706
|
* @param listeners - Map of event names to handler functions
|
|
694
707
|
* @param client - The Dynamic client instance
|
|
695
708
|
* @returns Cleanup function that removes all registered listeners
|
|
709
|
+
* @not-instrumented
|
|
696
710
|
*/
|
|
697
711
|
const listenForPhantomBroadcast = (listeners, client) => {
|
|
698
712
|
const { crossTabBroadcast } = (0, _dynamic_labs_sdk_client_core.getCore)(client);
|
|
@@ -730,6 +744,7 @@ const extractDappUrl = (redirectUrl) => {
|
|
|
730
744
|
*
|
|
731
745
|
* @param params.dynamicClient - The Dynamic client instance
|
|
732
746
|
* @returns A Phantom redirect wallet provider
|
|
747
|
+
* @not-instrumented
|
|
733
748
|
*/
|
|
734
749
|
const createPhantomRedirectWalletProvider = ({ baseRedirectUrl, dynamicClient }) => {
|
|
735
750
|
const core = (0, _dynamic_labs_sdk_client_core.getCore)(dynamicClient);
|
|
@@ -1078,6 +1093,7 @@ const createPhantomRedirectWalletProvider = ({ baseRedirectUrl, dynamicClient })
|
|
|
1078
1093
|
* @param params.url - The URL to check for Phantom redirect parameters
|
|
1079
1094
|
* @param client - The Dynamic client instance
|
|
1080
1095
|
* @returns A promise that resolves to true if the URL is a valid Phantom redirect, false otherwise
|
|
1096
|
+
* @not-instrumented
|
|
1081
1097
|
*/
|
|
1082
1098
|
const detectPhantomRedirect = async ({ url }, client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
|
|
1083
1099
|
const core = (0, _dynamic_labs_sdk_client_core.getCore)(client);
|
|
@@ -1134,6 +1150,7 @@ const PHANTOM_REDIRECT_SOLANA_EXTENSION_KEY = "phantomRedirectSolana";
|
|
|
1134
1150
|
* @param params.onCloseTab - Callback invoked when the clone tab should close
|
|
1135
1151
|
* @param params.disableAutoRedirectCompletion - Skip auto detection/completion
|
|
1136
1152
|
* @param [client] - The Dynamic client. Only required for multiple clients.
|
|
1153
|
+
* @not-instrumented
|
|
1137
1154
|
*/
|
|
1138
1155
|
const addPhantomRedirectSolanaExtension = async ({ disableAutoRedirectCompletion, onCloseTab, url }, client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
|
|
1139
1156
|
if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: PHANTOM_REDIRECT_SOLANA_EXTENSION_KEY }, client)) {
|
|
@@ -1193,6 +1210,7 @@ const addPhantomRedirectSolanaExtension = async ({ disableAutoRedirectCompletion
|
|
|
1193
1210
|
* @param params.walletAccount - The wallet account to sign the transactions with
|
|
1194
1211
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
1195
1212
|
* @returns An object containing the signed transactions
|
|
1213
|
+
* @not-instrumented
|
|
1196
1214
|
*/
|
|
1197
1215
|
const signAllTransactions = async ({ walletAccount, transactions }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
1198
1216
|
const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
|
|
@@ -1215,6 +1233,7 @@ const signAllTransactions = async ({ walletAccount, transactions }, client = (0,
|
|
|
1215
1233
|
* @returns An object containing the signature
|
|
1216
1234
|
* @throws {NotSolanaProviderError} If the wallet provider is not a Solana provider
|
|
1217
1235
|
* @throws {MethodNotImplementedError} If the wallet provider does not implement signAndSendSponsoredTransaction
|
|
1236
|
+
* @not-instrumented
|
|
1218
1237
|
*/
|
|
1219
1238
|
const signAndSendSponsoredTransaction = async ({ walletAccount, transaction, options }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
1220
1239
|
const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
|
|
@@ -1235,6 +1254,7 @@ const signAndSendSponsoredTransaction = async ({ walletAccount, transaction, opt
|
|
|
1235
1254
|
* @param params.walletAccount - The wallet account to sign and send the transaction with
|
|
1236
1255
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
1237
1256
|
* @returns An object containing the signature
|
|
1257
|
+
* @not-instrumented
|
|
1238
1258
|
*/
|
|
1239
1259
|
const signAndSendTransaction = async ({ walletAccount, transaction, options }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
1240
1260
|
const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
|
|
@@ -1254,6 +1274,7 @@ const signAndSendTransaction = async ({ walletAccount, transaction, options }, c
|
|
|
1254
1274
|
* @param params.walletAccount - The wallet account to sign the transaction with
|
|
1255
1275
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
1256
1276
|
* @returns An object containing the signed transaction
|
|
1277
|
+
* @not-instrumented
|
|
1257
1278
|
*/
|
|
1258
1279
|
const signTransaction = async ({ walletAccount, transaction }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
1259
1280
|
const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
|