@dynamic-labs-sdk/solana 0.1.1 → 0.2.3
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/SolanaNetworkProvider.types.d.ts.map +1 -0
- package/dist/SolanaWalletAccount.types.d.ts.map +1 -0
- package/dist/SolanaWalletProvider.types.d.ts.map +1 -0
- package/{src → dist}/addSolanaExtension/addSolanaExtension.d.ts +1 -1
- package/dist/addSolanaExtension/addSolanaExtension.d.ts.map +1 -0
- package/dist/addSolanaExtension/index.d.ts.map +1 -0
- package/dist/addSolanaWalletStandardExtension-BToyMUc9.cjs.js +231 -0
- package/dist/addSolanaWalletStandardExtension-BToyMUc9.cjs.js.map +1 -0
- package/dist/addSolanaWalletStandardExtension-nZhmVofg.esm.js +192 -0
- package/dist/addSolanaWalletStandardExtension-nZhmVofg.esm.js.map +1 -0
- package/dist/addWaasSolanaExtension-CUJHPuv5.esm.js +145 -0
- package/dist/addWaasSolanaExtension-CUJHPuv5.esm.js.map +1 -0
- package/dist/addWaasSolanaExtension-DB0ZNIuG.cjs.js +157 -0
- package/dist/addWaasSolanaExtension-DB0ZNIuG.cjs.js.map +1 -0
- package/dist/errors/NotSolanaProviderError/NotSolanaProviderError.d.ts.map +1 -0
- package/dist/errors/NotSolanaProviderError/index.d.ts.map +1 -0
- package/dist/exports/index.d.ts.map +1 -0
- package/dist/exports/waas.d.ts.map +1 -0
- package/dist/exports/walletStandard.d.ts.map +1 -0
- package/dist/getSolanaConnection/getSolanaConnection.d.ts.map +1 -0
- package/dist/getSolanaConnection/index.d.ts.map +1 -0
- package/dist/index.cjs.js +132 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.esm.js +125 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/isSolanaNetworkProvider/index.d.ts.map +1 -0
- package/dist/isSolanaNetworkProvider/isSolanaNetworkProvider.d.ts.map +1 -0
- package/dist/isSolanaWalletAccount/index.d.ts.map +1 -0
- package/dist/isSolanaWalletAccount/isSolanaWalletAccount.d.ts.map +1 -0
- package/dist/isSolanaWalletProvider/index.d.ts.map +1 -0
- package/dist/isSolanaWalletProvider/isSolanaWalletProvider.d.ts.map +1 -0
- package/dist/isVersionedTransaction-B-yrMKci.esm.js +48 -0
- package/dist/isVersionedTransaction-B-yrMKci.esm.js.map +1 -0
- package/dist/isVersionedTransaction-BAaz3ONI.cjs.js +72 -0
- package/dist/isVersionedTransaction-BAaz3ONI.cjs.js.map +1 -0
- package/dist/registerSolanaNetworkProviderBuilder/index.d.ts.map +1 -0
- package/dist/registerSolanaNetworkProviderBuilder/registerSolanaNetworkProviderBuilder.d.ts.map +1 -0
- package/dist/signAllTransactions/index.d.ts.map +1 -0
- package/{src → dist}/signAllTransactions/signAllTransactions.d.ts +1 -1
- package/dist/signAllTransactions/signAllTransactions.d.ts.map +1 -0
- package/dist/signAndSendTransaction/index.d.ts.map +1 -0
- package/{src → dist}/signAndSendTransaction/signAndSendTransaction.d.ts +1 -1
- package/dist/signAndSendTransaction/signAndSendTransaction.d.ts.map +1 -0
- package/dist/signTransaction/index.d.ts.map +1 -0
- package/{src → dist}/signTransaction/signTransaction.d.ts +1 -1
- package/dist/signTransaction/signTransaction.d.ts.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/dist/utils/createEmptyEventEmitter/createEmptyEventEmitter.d.ts.map +1 -0
- package/dist/utils/createEmptyEventEmitter/index.d.ts.map +1 -0
- package/dist/utils/createSolanaNetworkProvider/createSolanaNetworkProvider.d.ts.map +1 -0
- package/dist/utils/createSolanaNetworkProvider/index.d.ts.map +1 -0
- package/dist/utils/fetchSolBalance/fetchSolBalance.d.ts.map +1 -0
- package/dist/utils/fetchSolBalance/index.d.ts.map +1 -0
- package/dist/utils/isVersionedTransaction/index.d.ts.map +1 -0
- package/dist/utils/isVersionedTransaction/isVersionedTransaction.d.ts.map +1 -0
- package/dist/waas/WaasSolanaWalletProvider.types.d.ts.map +1 -0
- package/{src → dist}/waas/addWaasSolanaExtension/addWaasSolanaExtension.d.ts +1 -1
- package/dist/waas/addWaasSolanaExtension/addWaasSolanaExtension.d.ts.map +1 -0
- package/dist/waas/addWaasSolanaExtension/index.d.ts.map +1 -0
- package/dist/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.d.ts.map +1 -0
- package/dist/waas/utils/createWalletProviderForWaasSolana/index.d.ts.map +1 -0
- package/dist/waas.cjs.js +11 -0
- package/dist/waas.cjs.js.map +1 -0
- package/dist/waas.esm.js +10 -0
- package/dist/waas.esm.js.map +1 -0
- package/{src → dist}/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts +1 -1
- package/dist/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts.map +1 -0
- package/dist/walletStandard/addSolanaWalletStandardExtension/index.d.ts.map +1 -0
- package/dist/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts.map +1 -0
- package/dist/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/getActiveNetworkId.d.ts.map +1 -0
- package/dist/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/index.d.ts.map +1 -0
- package/dist/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/index.d.ts.map +1 -0
- package/dist/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.d.ts.map +1 -0
- package/dist/walletStandard/utils/getActiveNetworkCluster/index.d.ts.map +1 -0
- package/{src → dist}/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.d.ts +1 -1
- package/dist/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.d.ts.map +1 -0
- package/dist/walletStandard/utils/getFeaturesForSolanaStandardWallet/index.d.ts.map +1 -0
- package/dist/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.d.ts.map +1 -0
- package/dist/walletStandard/utils/hasAllRequiredFeatures/index.d.ts.map +1 -0
- package/dist/walletStandard.cjs.js +10 -0
- package/dist/walletStandard.cjs.js.map +1 -0
- package/dist/walletStandard.esm.js +10 -0
- package/dist/walletStandard.esm.js.map +1 -0
- package/package.json +31 -17
- package/CHANGELOG.md +0 -600
- package/addSolanaWalletStandardExtension.cjs.js +0 -268
- package/addSolanaWalletStandardExtension.esm.js +0 -266
- package/addWaasSolanaExtension.cjs.js +0 -163
- package/addWaasSolanaExtension.esm.js +0 -160
- package/index.cjs.d.ts +0 -1
- package/index.cjs.js +0 -131
- package/index.esm.d.ts +0 -1
- package/index.esm.js +0 -123
- package/isVersionedTransaction.cjs.js +0 -64
- package/isVersionedTransaction.esm.js +0 -58
- package/src/SolanaNetworkProvider.types.d.ts.map +0 -1
- package/src/SolanaWalletAccount.types.d.ts.map +0 -1
- package/src/SolanaWalletProvider.types.d.ts.map +0 -1
- package/src/addSolanaExtension/addSolanaExtension.d.ts.map +0 -1
- package/src/addSolanaExtension/index.d.ts.map +0 -1
- package/src/errors/NotSolanaProviderError/NotSolanaProviderError.d.ts.map +0 -1
- package/src/errors/NotSolanaProviderError/index.d.ts.map +0 -1
- package/src/exports/index.d.ts.map +0 -1
- package/src/exports/waas.d.ts.map +0 -1
- package/src/exports/walletStandard.d.ts.map +0 -1
- package/src/getSolanaConnection/getSolanaConnection.d.ts.map +0 -1
- package/src/getSolanaConnection/index.d.ts.map +0 -1
- package/src/isSolanaNetworkProvider/index.d.ts.map +0 -1
- package/src/isSolanaNetworkProvider/isSolanaNetworkProvider.d.ts.map +0 -1
- package/src/isSolanaWalletAccount/index.d.ts.map +0 -1
- package/src/isSolanaWalletAccount/isSolanaWalletAccount.d.ts.map +0 -1
- package/src/isSolanaWalletProvider/index.d.ts.map +0 -1
- package/src/isSolanaWalletProvider/isSolanaWalletProvider.d.ts.map +0 -1
- package/src/registerSolanaNetworkProviderBuilder/index.d.ts.map +0 -1
- package/src/registerSolanaNetworkProviderBuilder/registerSolanaNetworkProviderBuilder.d.ts.map +0 -1
- package/src/signAllTransactions/index.d.ts.map +0 -1
- package/src/signAllTransactions/signAllTransactions.d.ts.map +0 -1
- package/src/signAndSendTransaction/index.d.ts.map +0 -1
- package/src/signAndSendTransaction/signAndSendTransaction.d.ts.map +0 -1
- package/src/signTransaction/index.d.ts.map +0 -1
- package/src/signTransaction/signTransaction.d.ts.map +0 -1
- package/src/utils/createEmptyEventEmitter/createEmptyEventEmitter.d.ts.map +0 -1
- package/src/utils/createEmptyEventEmitter/index.d.ts.map +0 -1
- package/src/utils/createSolanaNetworkProvider/createSolanaNetworkProvider.d.ts.map +0 -1
- package/src/utils/createSolanaNetworkProvider/index.d.ts.map +0 -1
- package/src/utils/fetchSolBalance/fetchSolBalance.d.ts.map +0 -1
- package/src/utils/fetchSolBalance/index.d.ts.map +0 -1
- package/src/utils/isVersionedTransaction/index.d.ts.map +0 -1
- package/src/utils/isVersionedTransaction/isVersionedTransaction.d.ts.map +0 -1
- package/src/waas/WaasSolanaWalletProvider.types.d.ts.map +0 -1
- package/src/waas/addWaasSolanaExtension/addWaasSolanaExtension.d.ts.map +0 -1
- package/src/waas/addWaasSolanaExtension/index.d.ts.map +0 -1
- package/src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.d.ts.map +0 -1
- package/src/waas/utils/createWalletProviderForWaasSolana/index.d.ts.map +0 -1
- package/src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts.map +0 -1
- package/src/walletStandard/addSolanaWalletStandardExtension/index.d.ts.map +0 -1
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts.map +0 -1
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/getActiveNetworkId.d.ts.map +0 -1
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/index.d.ts.map +0 -1
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/index.d.ts.map +0 -1
- package/src/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.d.ts.map +0 -1
- package/src/walletStandard/utils/getActiveNetworkCluster/index.d.ts.map +0 -1
- package/src/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.d.ts.map +0 -1
- package/src/walletStandard/utils/getFeaturesForSolanaStandardWallet/index.d.ts.map +0 -1
- package/src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.d.ts.map +0 -1
- package/src/walletStandard/utils/hasAllRequiredFeatures/index.d.ts.map +0 -1
- package/waas.cjs.d.ts +0 -1
- package/waas.cjs.js +0 -14
- package/waas.esm.d.ts +0 -1
- package/waas.esm.js +0 -10
- package/walletStandard.cjs.d.ts +0 -1
- package/walletStandard.cjs.js +0 -15
- package/walletStandard.esm.d.ts +0 -1
- package/walletStandard.esm.js +0 -11
- /package/{src → dist}/SolanaNetworkProvider.types.d.ts +0 -0
- /package/{src → dist}/SolanaWalletAccount.types.d.ts +0 -0
- /package/{src → dist}/SolanaWalletProvider.types.d.ts +0 -0
- /package/{src → dist}/addSolanaExtension/index.d.ts +0 -0
- /package/{src → dist}/errors/NotSolanaProviderError/NotSolanaProviderError.d.ts +0 -0
- /package/{src → dist}/errors/NotSolanaProviderError/index.d.ts +0 -0
- /package/{src → dist}/exports/index.d.ts +0 -0
- /package/{src → dist}/exports/waas.d.ts +0 -0
- /package/{src → dist}/exports/walletStandard.d.ts +0 -0
- /package/{src → dist}/getSolanaConnection/getSolanaConnection.d.ts +0 -0
- /package/{src → dist}/getSolanaConnection/index.d.ts +0 -0
- /package/{src → dist}/isSolanaNetworkProvider/index.d.ts +0 -0
- /package/{src → dist}/isSolanaNetworkProvider/isSolanaNetworkProvider.d.ts +0 -0
- /package/{src → dist}/isSolanaWalletAccount/index.d.ts +0 -0
- /package/{src → dist}/isSolanaWalletAccount/isSolanaWalletAccount.d.ts +0 -0
- /package/{src → dist}/isSolanaWalletProvider/index.d.ts +0 -0
- /package/{src → dist}/isSolanaWalletProvider/isSolanaWalletProvider.d.ts +0 -0
- /package/{src → dist}/registerSolanaNetworkProviderBuilder/index.d.ts +0 -0
- /package/{src → dist}/registerSolanaNetworkProviderBuilder/registerSolanaNetworkProviderBuilder.d.ts +0 -0
- /package/{src → dist}/signAllTransactions/index.d.ts +0 -0
- /package/{src → dist}/signAndSendTransaction/index.d.ts +0 -0
- /package/{src → dist}/signTransaction/index.d.ts +0 -0
- /package/{src → dist}/utils/createEmptyEventEmitter/createEmptyEventEmitter.d.ts +0 -0
- /package/{src → dist}/utils/createEmptyEventEmitter/index.d.ts +0 -0
- /package/{src → dist}/utils/createSolanaNetworkProvider/createSolanaNetworkProvider.d.ts +0 -0
- /package/{src → dist}/utils/createSolanaNetworkProvider/index.d.ts +0 -0
- /package/{src → dist}/utils/fetchSolBalance/fetchSolBalance.d.ts +0 -0
- /package/{src → dist}/utils/fetchSolBalance/index.d.ts +0 -0
- /package/{src → dist}/utils/isVersionedTransaction/index.d.ts +0 -0
- /package/{src → dist}/utils/isVersionedTransaction/isVersionedTransaction.d.ts +0 -0
- /package/{src → dist}/waas/WaasSolanaWalletProvider.types.d.ts +0 -0
- /package/{src → dist}/waas/addWaasSolanaExtension/index.d.ts +0 -0
- /package/{src → dist}/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.d.ts +0 -0
- /package/{src → dist}/waas/utils/createWalletProviderForWaasSolana/index.d.ts +0 -0
- /package/{src → dist}/walletStandard/addSolanaWalletStandardExtension/index.d.ts +0 -0
- /package/{src → dist}/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts +0 -0
- /package/{src → dist}/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/getActiveNetworkId.d.ts +0 -0
- /package/{src → dist}/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/index.d.ts +0 -0
- /package/{src → dist}/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/index.d.ts +0 -0
- /package/{src → dist}/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.d.ts +0 -0
- /package/{src → dist}/walletStandard/utils/getActiveNetworkCluster/index.d.ts +0 -0
- /package/{src → dist}/walletStandard/utils/getFeaturesForSolanaStandardWallet/index.d.ts +0 -0
- /package/{src → dist}/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.d.ts +0 -0
- /package/{src → dist}/walletStandard/utils/hasAllRequiredFeatures/index.d.ts +0 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { n as registerSolanaNetworkProviderBuilder, t as isVersionedTransaction } from "./isVersionedTransaction-B-yrMKci.esm.js";
|
|
2
|
+
import { WalletProviderPriority, assertDefined, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getBuffer, getDefaultClient, getWalletProviderRegistry, hasExtension, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
|
|
3
|
+
import { Connection, PublicKey } from "@solana/web3.js";
|
|
4
|
+
import { getActiveNetworkData } from "@dynamic-labs-sdk/client";
|
|
5
|
+
import { DYNAMIC_WAAS_METADATA, createWaasProvider, getAllUserWaasAddressesForChain } from "@dynamic-labs-sdk/client/waas/core";
|
|
6
|
+
import { WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
|
|
7
|
+
|
|
8
|
+
//#region src/getSolanaConnection/getSolanaConnection.ts
|
|
9
|
+
/**
|
|
10
|
+
* Returns a new Solana connection for the given network provider.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { getActiveNetworkData } from '@dynamic-labs-sdk/client';
|
|
15
|
+
* import { isSolanaNetworkProvider, getSolanaConnection } from '@dynamic-labs-sdk/solana';
|
|
16
|
+
*
|
|
17
|
+
* const { networkData } = getActiveNetworkData({ walletAccount });
|
|
18
|
+
*
|
|
19
|
+
* if(!networkData) {
|
|
20
|
+
* throw new Error('No network data found');
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* const connection = getSolanaConnection({
|
|
24
|
+
* networkData,
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
const getSolanaConnection = ({ networkData, commitmentOrConfig }) => {
|
|
29
|
+
return new Connection(networkData.rpcUrls.http[0], commitmentOrConfig);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.ts
|
|
34
|
+
const createWalletProviderForWaasSolana = (sdkClient) => {
|
|
35
|
+
const chain = "SOL";
|
|
36
|
+
const walletProviderType = WalletProviderEnum.EmbeddedWallet;
|
|
37
|
+
const key = formatWalletProviderKey({
|
|
38
|
+
chain,
|
|
39
|
+
displayName: DYNAMIC_WAAS_METADATA.displayName,
|
|
40
|
+
walletProviderType
|
|
41
|
+
});
|
|
42
|
+
const waasProvider = createWaasProvider({
|
|
43
|
+
chain,
|
|
44
|
+
sdkClient
|
|
45
|
+
});
|
|
46
|
+
const getActiveNetworkId = async () => getActiveNetworkIdFromLastKnownRegistry({
|
|
47
|
+
client: sdkClient,
|
|
48
|
+
walletProviderKey: key
|
|
49
|
+
});
|
|
50
|
+
const switchActiveNetwork = async ({ networkId }) => switchActiveNetworkInLastKnownRegistry({
|
|
51
|
+
client: sdkClient,
|
|
52
|
+
networkId,
|
|
53
|
+
walletProviderKey: key
|
|
54
|
+
});
|
|
55
|
+
const getConnectedAddresses = async () => {
|
|
56
|
+
return { addresses: getAllUserWaasAddressesForChain({ chain }, sdkClient) };
|
|
57
|
+
};
|
|
58
|
+
const signAndSendTransaction = async ({ transaction, walletAccount }) => {
|
|
59
|
+
const { signedTransaction } = await signTransaction({
|
|
60
|
+
transaction,
|
|
61
|
+
walletAccount
|
|
62
|
+
});
|
|
63
|
+
const { networkData } = await getActiveNetworkData({ walletAccount }, sdkClient);
|
|
64
|
+
assertDefined(networkData, "Network data is required");
|
|
65
|
+
const connection = getSolanaConnection({ networkData });
|
|
66
|
+
const rawTransaction = signedTransaction.serialize();
|
|
67
|
+
return { signature: await connection.sendRawTransaction(rawTransaction) };
|
|
68
|
+
};
|
|
69
|
+
const signTransaction = async ({ transaction, walletAccount }) => {
|
|
70
|
+
const messageBytes = isVersionedTransaction(transaction) ? transaction.message.serialize() : transaction.serializeMessage();
|
|
71
|
+
const serializedTransaction = getBuffer().from(messageBytes).toString("hex");
|
|
72
|
+
const { signature } = await waasProvider.signSerializedTransaction({
|
|
73
|
+
serializedTransaction,
|
|
74
|
+
walletAccount
|
|
75
|
+
});
|
|
76
|
+
const publicKey = new PublicKey(walletAccount.address);
|
|
77
|
+
transaction.addSignature(publicKey, getBuffer().from(signature, "hex"));
|
|
78
|
+
transaction.serialize({
|
|
79
|
+
requireAllSignatures: false,
|
|
80
|
+
verifySignatures: true
|
|
81
|
+
});
|
|
82
|
+
return { signedTransaction: transaction };
|
|
83
|
+
};
|
|
84
|
+
const signAllTransactions = async ({ transactions, walletAccount }) => {
|
|
85
|
+
return { signedTransactions: await Promise.all(transactions.map(async (transaction) => {
|
|
86
|
+
const { signedTransaction } = await signTransaction({
|
|
87
|
+
transaction,
|
|
88
|
+
walletAccount
|
|
89
|
+
});
|
|
90
|
+
return signedTransaction;
|
|
91
|
+
})) };
|
|
92
|
+
};
|
|
93
|
+
const signMessage = async ({ message, walletAccount }) => {
|
|
94
|
+
assertDefined(walletAccount, "Wallet account is required");
|
|
95
|
+
return waasProvider.signMessage({
|
|
96
|
+
message,
|
|
97
|
+
walletAccount
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
return {
|
|
101
|
+
...waasProvider,
|
|
102
|
+
chain,
|
|
103
|
+
getActiveNetworkId,
|
|
104
|
+
getConnectedAddresses,
|
|
105
|
+
groupKey: formatWalletProviderGroupKey(DYNAMIC_WAAS_METADATA.displayName),
|
|
106
|
+
key,
|
|
107
|
+
metadata: {
|
|
108
|
+
displayName: DYNAMIC_WAAS_METADATA.displayName,
|
|
109
|
+
icon: DYNAMIC_WAAS_METADATA.icon
|
|
110
|
+
},
|
|
111
|
+
signAllTransactions,
|
|
112
|
+
signAndSendTransaction,
|
|
113
|
+
signMessage,
|
|
114
|
+
signTransaction,
|
|
115
|
+
switchActiveNetwork,
|
|
116
|
+
walletProviderType
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
//#endregion
|
|
121
|
+
//#region src/waas/addWaasSolanaExtension/addWaasSolanaExtension.ts
|
|
122
|
+
const WAAS_SOLANA_EXTENSION_KEY = "waasSolana";
|
|
123
|
+
/**
|
|
124
|
+
* Adds the Dynamic WaaS (Wallet as a Service) Solana extension to the Dynamic client.
|
|
125
|
+
*
|
|
126
|
+
* This extension enables embedded wallet functionality for Solana blockchain,
|
|
127
|
+
* allowing users to have wallets managed by Dynamic's infrastructure.
|
|
128
|
+
*
|
|
129
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
130
|
+
*/
|
|
131
|
+
const addWaasSolanaExtension = (client = getDefaultClient()) => {
|
|
132
|
+
if (hasExtension({ extensionKey: WAAS_SOLANA_EXTENSION_KEY }, client)) return;
|
|
133
|
+
registerExtension({ extensionKey: WAAS_SOLANA_EXTENSION_KEY }, client);
|
|
134
|
+
registerSolanaNetworkProviderBuilder(client);
|
|
135
|
+
const walletProviderRegistry = getWalletProviderRegistry(client);
|
|
136
|
+
const walletProvider = createWalletProviderForWaasSolana(client);
|
|
137
|
+
walletProviderRegistry.register({
|
|
138
|
+
priority: WalletProviderPriority.WALLET_SDK,
|
|
139
|
+
walletProvider
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
//#endregion
|
|
144
|
+
export { getSolanaConnection as n, addWaasSolanaExtension as t };
|
|
145
|
+
//# sourceMappingURL=addWaasSolanaExtension-CUJHPuv5.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addWaasSolanaExtension-CUJHPuv5.esm.js","names":["chain: Chain","getActiveNetworkId: WaasSolanaWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasSolanaWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasSolanaWalletProvider['getConnectedAddresses']","signAndSendTransaction: WaasSolanaWalletProvider['signAndSendTransaction']","signTransaction: WaasSolanaWalletProvider['signTransaction']","signAllTransactions: WaasSolanaWalletProvider['signAllTransactions']","signMessage: WaasSolanaWalletProvider['signMessage']"],"sources":["../src/getSolanaConnection/getSolanaConnection.ts","../src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.ts","../src/waas/addWaasSolanaExtension/addWaasSolanaExtension.ts"],"sourcesContent":["import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport type { Commitment, ConnectionConfig } from '@solana/web3.js';\nimport { Connection } from '@solana/web3.js';\n\ntype GetSolanaConnectionOptions = {\n commitmentOrConfig?: Commitment | ConnectionConfig;\n networkData: NetworkData;\n};\n\n/**\n * Returns a new Solana connection for the given network provider.\n *\n * @example\n * ```ts\n * import { getActiveNetworkData } from '@dynamic-labs-sdk/client';\n * import { isSolanaNetworkProvider, getSolanaConnection } from '@dynamic-labs-sdk/solana';\n *\n * const { networkData } = getActiveNetworkData({ walletAccount });\n *\n * if(!networkData) {\n * throw new Error('No network data found');\n * }\n *\n * const connection = getSolanaConnection({\n * networkData,\n * });\n * ```\n */\nexport const getSolanaConnection = ({\n networkData,\n commitmentOrConfig,\n}: GetSolanaConnectionOptions) => {\n return new Connection(networkData.rpcUrls.http[0], commitmentOrConfig);\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 type { WaasSolanaWalletProvider } from '../../WaasSolanaWalletProvider.types';\n\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 }) => {\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(rawTransaction);\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 { signature } = await waasProvider.signSerializedTransaction({\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 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 signAndSendTransaction,\n signMessage,\n signTransaction,\n switchActiveNetwork,\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 */\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAa,uBAAuB,EAClC,aACA,yBACgC;AAChC,QAAO,IAAI,WAAW,YAAY,QAAQ,KAAK,IAAI,mBAAmB;;;;;ACPxE,MAAa,qCACX,cAC6B;CAC7B,MAAMA,QAAe;CAErB,MAAM,qBAAqB,mBAAmB;CAE9C,MAAM,MAAM,wBAAwB;EAClC;EACA,aAAa,sBAAsB;EACnC;EACD,CAAC;CAEF,MAAM,eAAe,mBAAmB;EAAE;EAAO;EAAW,CAAC;CAE7D,MAAMC,qBACJ,YACE,wCAAwC;EACtC,QAAQ;EACR,mBAAmB;EACpB,CAAC;CAEN,MAAMC,sBACJ,OAAO,EAAE,gBACP,uCAAuC;EACrC,QAAQ;EACR;EACA,mBAAmB;EACpB,CAAC;CAEN,MAAMC,wBACJ,YAAY;AAMV,SAAO,EACL,WAN0B,gCAC1B,EAAE,OAAO,EACT,UACD,EAIA;;CAGL,MAAMC,yBACJ,OAAO,EAAE,aAAa,oBAAoB;EACxC,MAAM,EAAE,sBAAsB,MAAM,gBAAgB;GAClD;GACA;GACD,CAAC;EAEF,MAAM,EAAE,gBAAgB,MAAM,qBAC5B,EAAE,eAAe,EACjB,UACD;AAED,gBAAc,aAAa,2BAA2B;EAEtD,MAAM,aAAa,oBAAoB,EAAE,aAAa,CAAC;EAEvD,MAAM,iBAAiB,kBAAkB,WAAW;AAIpD,SAAO,EAAE,WAFS,MAAM,WAAW,mBAAmB,eAAe,EAEjD;;CAGxB,MAAMC,kBAA+D,OAAO,EAC1E,aACA,oBACI;EACJ,MAAM,eAAe,uBAAuB,YAAY,GACpD,YAAY,QAAQ,WAAW,GAC/B,YAAY,kBAAkB;EAElC,MAAM,wBAAwB,WAAW,CAEtC,KAAK,aAAoB,CACzB,SAAS,MAAM;EAElB,MAAM,EAAE,cAAc,MAAM,aAAa,0BAA0B;GACjE;GACA;GACD,CAAC;EAEF,MAAM,YAAY,IAAI,UAAU,cAAc,QAAQ;AAEtD,cAAY,aACV,WAEA,WAAW,CAAC,KAAK,WAAW,MAAM,CACnC;AAED,cAAY,UAAU;GACpB,sBAAsB;GACtB,kBAAkB;GACnB,CAAC;AAEF,SAAO,EAAE,mBAAmB,aAAa;;CAG3C,MAAMC,sBACJ,OAAO,EAAE,cAAc,oBAAoB;AAYzC,SAAO,EAAE,oBAXkB,MAAM,QAAQ,IACvC,aAAa,IAAI,OAAO,gBAAgB;GACtC,MAAM,EAAE,sBAAsB,MAAM,gBAAgB;IAClD;IACA;IACD,CAAC;AAEF,UAAO;IACP,CACH,EAE4B;;CAGjC,MAAMC,cAAuD,OAAO,EAClE,SACA,oBACI;AACJ,gBAAc,eAAe,6BAA6B;AAE1D,SAAO,aAAa,YAAY;GAAE;GAAS;GAAe,CAAC;;AAG7D,QAAO;EACL,GAAG;EACH;EACA;EACA;EACA,UAAU,6BAA6B,sBAAsB,YAAY;EACzE;EACA,UAAU;GACR,aAAa,sBAAsB;GACnC,MAAM,sBAAsB;GAC7B;EACD;EACA;EACA;EACA;EACA;EACA;EACD;;;;;AC3JH,MAAa,4BAA4B;;;;;;;;;AAUzC,MAAa,0BAA0B,SAAS,kBAAkB,KAAW;AAC3E,KAAI,aAAa,EAAE,cAAc,2BAA2B,EAAE,OAAO,CACnE;AAGF,mBAAkB,EAAE,cAAc,2BAA2B,EAAE,OAAO;AACtE,sCAAqC,OAAO;CAE5C,MAAM,yBAAyB,0BAA0B,OAAO;CAEhE,MAAM,iBAAiB,kCAAkC,OAAO;AAEhE,wBAAuB,SAAS;EAC9B,UAAU,uBAAuB;EACjC;EACD,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
const require_addSolanaWalletStandardExtension = require('./addSolanaWalletStandardExtension-BToyMUc9.cjs.js');
|
|
2
|
+
const require_isVersionedTransaction = require('./isVersionedTransaction-BAaz3ONI.cjs.js');
|
|
3
|
+
let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
|
|
4
|
+
let _solana_web3_js = require("@solana/web3.js");
|
|
5
|
+
let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
|
|
6
|
+
let _dynamic_labs_sdk_client_waas_core = require("@dynamic-labs-sdk/client/waas/core");
|
|
7
|
+
let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
|
|
8
|
+
|
|
9
|
+
//#region src/getSolanaConnection/getSolanaConnection.ts
|
|
10
|
+
/**
|
|
11
|
+
* Returns a new Solana connection for the given network provider.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { getActiveNetworkData } from '@dynamic-labs-sdk/client';
|
|
16
|
+
* import { isSolanaNetworkProvider, getSolanaConnection } from '@dynamic-labs-sdk/solana';
|
|
17
|
+
*
|
|
18
|
+
* const { networkData } = getActiveNetworkData({ walletAccount });
|
|
19
|
+
*
|
|
20
|
+
* if(!networkData) {
|
|
21
|
+
* throw new Error('No network data found');
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* const connection = getSolanaConnection({
|
|
25
|
+
* networkData,
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
const getSolanaConnection = ({ networkData, commitmentOrConfig }) => {
|
|
30
|
+
return new _solana_web3_js.Connection(networkData.rpcUrls.http[0], commitmentOrConfig);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.ts
|
|
35
|
+
const createWalletProviderForWaasSolana = (sdkClient) => {
|
|
36
|
+
const chain = "SOL";
|
|
37
|
+
const walletProviderType = _dynamic_labs_sdk_api_core.WalletProviderEnum.EmbeddedWallet;
|
|
38
|
+
const key = (0, _dynamic_labs_sdk_client_core.formatWalletProviderKey)({
|
|
39
|
+
chain,
|
|
40
|
+
displayName: _dynamic_labs_sdk_client_waas_core.DYNAMIC_WAAS_METADATA.displayName,
|
|
41
|
+
walletProviderType
|
|
42
|
+
});
|
|
43
|
+
const waasProvider = (0, _dynamic_labs_sdk_client_waas_core.createWaasProvider)({
|
|
44
|
+
chain,
|
|
45
|
+
sdkClient
|
|
46
|
+
});
|
|
47
|
+
const getActiveNetworkId = async () => (0, _dynamic_labs_sdk_client_core.getActiveNetworkIdFromLastKnownRegistry)({
|
|
48
|
+
client: sdkClient,
|
|
49
|
+
walletProviderKey: key
|
|
50
|
+
});
|
|
51
|
+
const switchActiveNetwork = async ({ networkId }) => (0, _dynamic_labs_sdk_client_core.switchActiveNetworkInLastKnownRegistry)({
|
|
52
|
+
client: sdkClient,
|
|
53
|
+
networkId,
|
|
54
|
+
walletProviderKey: key
|
|
55
|
+
});
|
|
56
|
+
const getConnectedAddresses = async () => {
|
|
57
|
+
return { addresses: (0, _dynamic_labs_sdk_client_waas_core.getAllUserWaasAddressesForChain)({ chain }, sdkClient) };
|
|
58
|
+
};
|
|
59
|
+
const signAndSendTransaction = async ({ transaction, walletAccount }) => {
|
|
60
|
+
const { signedTransaction } = await signTransaction({
|
|
61
|
+
transaction,
|
|
62
|
+
walletAccount
|
|
63
|
+
});
|
|
64
|
+
const { networkData } = await (0, _dynamic_labs_sdk_client.getActiveNetworkData)({ walletAccount }, sdkClient);
|
|
65
|
+
(0, _dynamic_labs_sdk_client_core.assertDefined)(networkData, "Network data is required");
|
|
66
|
+
const connection = getSolanaConnection({ networkData });
|
|
67
|
+
const rawTransaction = signedTransaction.serialize();
|
|
68
|
+
return { signature: await connection.sendRawTransaction(rawTransaction) };
|
|
69
|
+
};
|
|
70
|
+
const signTransaction = async ({ transaction, walletAccount }) => {
|
|
71
|
+
const messageBytes = require_isVersionedTransaction.isVersionedTransaction(transaction) ? transaction.message.serialize() : transaction.serializeMessage();
|
|
72
|
+
const serializedTransaction = (0, _dynamic_labs_sdk_client_core.getBuffer)().from(messageBytes).toString("hex");
|
|
73
|
+
const { signature } = await waasProvider.signSerializedTransaction({
|
|
74
|
+
serializedTransaction,
|
|
75
|
+
walletAccount
|
|
76
|
+
});
|
|
77
|
+
const publicKey = new _solana_web3_js.PublicKey(walletAccount.address);
|
|
78
|
+
transaction.addSignature(publicKey, (0, _dynamic_labs_sdk_client_core.getBuffer)().from(signature, "hex"));
|
|
79
|
+
transaction.serialize({
|
|
80
|
+
requireAllSignatures: false,
|
|
81
|
+
verifySignatures: true
|
|
82
|
+
});
|
|
83
|
+
return { signedTransaction: transaction };
|
|
84
|
+
};
|
|
85
|
+
const signAllTransactions = async ({ transactions, walletAccount }) => {
|
|
86
|
+
return { signedTransactions: await Promise.all(transactions.map(async (transaction) => {
|
|
87
|
+
const { signedTransaction } = await signTransaction({
|
|
88
|
+
transaction,
|
|
89
|
+
walletAccount
|
|
90
|
+
});
|
|
91
|
+
return signedTransaction;
|
|
92
|
+
})) };
|
|
93
|
+
};
|
|
94
|
+
const signMessage = async ({ message, walletAccount }) => {
|
|
95
|
+
(0, _dynamic_labs_sdk_client_core.assertDefined)(walletAccount, "Wallet account is required");
|
|
96
|
+
return waasProvider.signMessage({
|
|
97
|
+
message,
|
|
98
|
+
walletAccount
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
...waasProvider,
|
|
103
|
+
chain,
|
|
104
|
+
getActiveNetworkId,
|
|
105
|
+
getConnectedAddresses,
|
|
106
|
+
groupKey: (0, _dynamic_labs_sdk_client_core.formatWalletProviderGroupKey)(_dynamic_labs_sdk_client_waas_core.DYNAMIC_WAAS_METADATA.displayName),
|
|
107
|
+
key,
|
|
108
|
+
metadata: {
|
|
109
|
+
displayName: _dynamic_labs_sdk_client_waas_core.DYNAMIC_WAAS_METADATA.displayName,
|
|
110
|
+
icon: _dynamic_labs_sdk_client_waas_core.DYNAMIC_WAAS_METADATA.icon
|
|
111
|
+
},
|
|
112
|
+
signAllTransactions,
|
|
113
|
+
signAndSendTransaction,
|
|
114
|
+
signMessage,
|
|
115
|
+
signTransaction,
|
|
116
|
+
switchActiveNetwork,
|
|
117
|
+
walletProviderType
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
//#endregion
|
|
122
|
+
//#region src/waas/addWaasSolanaExtension/addWaasSolanaExtension.ts
|
|
123
|
+
const WAAS_SOLANA_EXTENSION_KEY = "waasSolana";
|
|
124
|
+
/**
|
|
125
|
+
* Adds the Dynamic WaaS (Wallet as a Service) Solana extension to the Dynamic client.
|
|
126
|
+
*
|
|
127
|
+
* This extension enables embedded wallet functionality for Solana blockchain,
|
|
128
|
+
* allowing users to have wallets managed by Dynamic's infrastructure.
|
|
129
|
+
*
|
|
130
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
131
|
+
*/
|
|
132
|
+
const addWaasSolanaExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
|
|
133
|
+
if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: WAAS_SOLANA_EXTENSION_KEY }, client)) return;
|
|
134
|
+
(0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: WAAS_SOLANA_EXTENSION_KEY }, client);
|
|
135
|
+
require_isVersionedTransaction.registerSolanaNetworkProviderBuilder(client);
|
|
136
|
+
const walletProviderRegistry = (0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client);
|
|
137
|
+
const walletProvider = createWalletProviderForWaasSolana(client);
|
|
138
|
+
walletProviderRegistry.register({
|
|
139
|
+
priority: _dynamic_labs_sdk_client_core.WalletProviderPriority.WALLET_SDK,
|
|
140
|
+
walletProvider
|
|
141
|
+
});
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
//#endregion
|
|
145
|
+
Object.defineProperty(exports, 'addWaasSolanaExtension', {
|
|
146
|
+
enumerable: true,
|
|
147
|
+
get: function () {
|
|
148
|
+
return addWaasSolanaExtension;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
Object.defineProperty(exports, 'getSolanaConnection', {
|
|
152
|
+
enumerable: true,
|
|
153
|
+
get: function () {
|
|
154
|
+
return getSolanaConnection;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
//# sourceMappingURL=addWaasSolanaExtension-DB0ZNIuG.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addWaasSolanaExtension-DB0ZNIuG.cjs.js","names":["Connection","chain: Chain","WalletProviderEnum","DYNAMIC_WAAS_METADATA","getActiveNetworkId: WaasSolanaWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasSolanaWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasSolanaWalletProvider['getConnectedAddresses']","signAndSendTransaction: WaasSolanaWalletProvider['signAndSendTransaction']","signTransaction: WaasSolanaWalletProvider['signTransaction']","isVersionedTransaction","PublicKey","signAllTransactions: WaasSolanaWalletProvider['signAllTransactions']","signMessage: WaasSolanaWalletProvider['signMessage']","WalletProviderPriority"],"sources":["../src/getSolanaConnection/getSolanaConnection.ts","../src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.ts","../src/waas/addWaasSolanaExtension/addWaasSolanaExtension.ts"],"sourcesContent":["import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport type { Commitment, ConnectionConfig } from '@solana/web3.js';\nimport { Connection } from '@solana/web3.js';\n\ntype GetSolanaConnectionOptions = {\n commitmentOrConfig?: Commitment | ConnectionConfig;\n networkData: NetworkData;\n};\n\n/**\n * Returns a new Solana connection for the given network provider.\n *\n * @example\n * ```ts\n * import { getActiveNetworkData } from '@dynamic-labs-sdk/client';\n * import { isSolanaNetworkProvider, getSolanaConnection } from '@dynamic-labs-sdk/solana';\n *\n * const { networkData } = getActiveNetworkData({ walletAccount });\n *\n * if(!networkData) {\n * throw new Error('No network data found');\n * }\n *\n * const connection = getSolanaConnection({\n * networkData,\n * });\n * ```\n */\nexport const getSolanaConnection = ({\n networkData,\n commitmentOrConfig,\n}: GetSolanaConnectionOptions) => {\n return new Connection(networkData.rpcUrls.http[0], commitmentOrConfig);\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 type { WaasSolanaWalletProvider } from '../../WaasSolanaWalletProvider.types';\n\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 }) => {\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(rawTransaction);\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 { signature } = await waasProvider.signSerializedTransaction({\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 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 signAndSendTransaction,\n signMessage,\n signTransaction,\n switchActiveNetwork,\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 */\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAa,uBAAuB,EAClC,aACA,yBACgC;AAChC,QAAO,IAAIA,2BAAW,YAAY,QAAQ,KAAK,IAAI,mBAAmB;;;;;ACPxE,MAAa,qCACX,cAC6B;CAC7B,MAAMC,QAAe;CAErB,MAAM,qBAAqBC,8CAAmB;CAE9C,MAAM,iEAA8B;EAClC;EACA,aAAaC,yDAAsB;EACnC;EACD,CAAC;CAEF,MAAM,0EAAkC;EAAE;EAAO;EAAW,CAAC;CAE7D,MAAMC,qBACJ,uFAC0C;EACtC,QAAQ;EACR,mBAAmB;EACpB,CAAC;CAEN,MAAMC,sBACJ,OAAO,EAAE,0FACgC;EACrC,QAAQ;EACR;EACA,mBAAmB;EACpB,CAAC;CAEN,MAAMC,wBACJ,YAAY;AAMV,SAAO,EACL,mFALA,EAAE,OAAO,EACT,UACD,EAIA;;CAGL,MAAMC,yBACJ,OAAO,EAAE,aAAa,oBAAoB;EACxC,MAAM,EAAE,sBAAsB,MAAM,gBAAgB;GAClD;GACA;GACD,CAAC;EAEF,MAAM,EAAE,gBAAgB,yDACtB,EAAE,eAAe,EACjB,UACD;AAED,mDAAc,aAAa,2BAA2B;EAEtD,MAAM,aAAa,oBAAoB,EAAE,aAAa,CAAC;EAEvD,MAAM,iBAAiB,kBAAkB,WAAW;AAIpD,SAAO,EAAE,WAFS,MAAM,WAAW,mBAAmB,eAAe,EAEjD;;CAGxB,MAAMC,kBAA+D,OAAO,EAC1E,aACA,oBACI;EACJ,MAAM,eAAeC,sDAAuB,YAAY,GACpD,YAAY,QAAQ,WAAW,GAC/B,YAAY,kBAAkB;EAElC,MAAM,sEAAmC,CAEtC,KAAK,aAAoB,CACzB,SAAS,MAAM;EAElB,MAAM,EAAE,cAAc,MAAM,aAAa,0BAA0B;GACjE;GACA;GACD,CAAC;EAEF,MAAM,YAAY,IAAIC,0BAAU,cAAc,QAAQ;AAEtD,cAAY,aACV,yDAEW,CAAC,KAAK,WAAW,MAAM,CACnC;AAED,cAAY,UAAU;GACpB,sBAAsB;GACtB,kBAAkB;GACnB,CAAC;AAEF,SAAO,EAAE,mBAAmB,aAAa;;CAG3C,MAAMC,sBACJ,OAAO,EAAE,cAAc,oBAAoB;AAYzC,SAAO,EAAE,oBAXkB,MAAM,QAAQ,IACvC,aAAa,IAAI,OAAO,gBAAgB;GACtC,MAAM,EAAE,sBAAsB,MAAM,gBAAgB;IAClD;IACA;IACD,CAAC;AAEF,UAAO;IACP,CACH,EAE4B;;CAGjC,MAAMC,cAAuD,OAAO,EAClE,SACA,oBACI;AACJ,mDAAc,eAAe,6BAA6B;AAE1D,SAAO,aAAa,YAAY;GAAE;GAAS;GAAe,CAAC;;AAG7D,QAAO;EACL,GAAG;EACH;EACA;EACA;EACA,0EAAuCT,yDAAsB,YAAY;EACzE;EACA,UAAU;GACR,aAAaA,yDAAsB;GACnC,MAAMA,yDAAsB;GAC7B;EACD;EACA;EACA;EACA;EACA;EACA;EACD;;;;;AC3JH,MAAa,4BAA4B;;;;;;;;;AAUzC,MAAa,0BAA0B,8DAA2B,KAAW;AAC3E,qDAAiB,EAAE,cAAc,2BAA2B,EAAE,OAAO,CACnE;AAGF,sDAAkB,EAAE,cAAc,2BAA2B,EAAE,OAAO;AACtE,qEAAqC,OAAO;CAE5C,MAAM,sFAAmD,OAAO;CAEhE,MAAM,iBAAiB,kCAAkC,OAAO;AAEhE,wBAAuB,SAAS;EAC9B,UAAUU,qDAAuB;EACjC;EACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotSolanaProviderError.d.ts","sourceRoot":"","sources":["../../../src/errors/NotSolanaProviderError/NotSolanaProviderError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE;CAW5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/errors/NotSolanaProviderError/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exports/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waas.d.ts","sourceRoot":"","sources":["../../src/exports/waas.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletStandard.d.ts","sourceRoot":"","sources":["../../src/exports/walletStandard.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gCAAgC,EAAE,MAAM,oDAAoD,CAAC"}
|
|
@@ -0,0 +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;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,yCAG7B,0BAA0B,eAE5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/getSolanaConnection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
const require_addSolanaWalletStandardExtension = require('./addSolanaWalletStandardExtension-BToyMUc9.cjs.js');
|
|
2
|
+
const require_isVersionedTransaction = require('./isVersionedTransaction-BAaz3ONI.cjs.js');
|
|
3
|
+
const require_addWaasSolanaExtension = require('./addWaasSolanaExtension-DB0ZNIuG.cjs.js');
|
|
4
|
+
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
|
5
|
+
let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
|
|
6
|
+
let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
|
|
7
|
+
|
|
8
|
+
//#region src/addSolanaExtension/addSolanaExtension.ts
|
|
9
|
+
/**
|
|
10
|
+
* Adds the Solana extension to the Dynamic client.
|
|
11
|
+
*
|
|
12
|
+
* This is a convenience function that adds both the Solana Wallet Standard extension
|
|
13
|
+
* and the Dynamic WaaS Solana extension, enabling support for all Solana wallet types
|
|
14
|
+
* including standard wallets and embedded wallets managed by Dynamic's infrastructure.
|
|
15
|
+
*
|
|
16
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
17
|
+
*/
|
|
18
|
+
const addSolanaExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
|
|
19
|
+
require_addSolanaWalletStandardExtension.addSolanaWalletStandardExtension(client);
|
|
20
|
+
require_addWaasSolanaExtension.addWaasSolanaExtension(client);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region src/errors/NotSolanaProviderError/NotSolanaProviderError.ts
|
|
25
|
+
var NotSolanaProviderError = class extends _dynamic_labs_sdk_client.BaseError {
|
|
26
|
+
providerKey;
|
|
27
|
+
constructor(params) {
|
|
28
|
+
super({
|
|
29
|
+
cause: null,
|
|
30
|
+
code: "not_solana_provider_error",
|
|
31
|
+
docsUrl: null,
|
|
32
|
+
name: "NotSolanaProviderError",
|
|
33
|
+
shortMessage: "Provider is not a Solana wallet provider"
|
|
34
|
+
});
|
|
35
|
+
this.providerKey = params.providerKey;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/isSolanaNetworkProvider/isSolanaNetworkProvider.ts
|
|
41
|
+
/**
|
|
42
|
+
* Type guard function to check if a network provider is a Solana network provider.
|
|
43
|
+
*
|
|
44
|
+
* @param networkProvider - The network provider to check.
|
|
45
|
+
* @returns True if the network provider is a Solana network provider, false otherwise.
|
|
46
|
+
*/
|
|
47
|
+
const isSolanaNetworkProvider = (networkProvider) => networkProvider.chain === "SOL";
|
|
48
|
+
|
|
49
|
+
//#endregion
|
|
50
|
+
//#region src/isSolanaWalletAccount/isSolanaWalletAccount.ts
|
|
51
|
+
/**
|
|
52
|
+
* Type guard function to check if a wallet account is a Solana wallet account.
|
|
53
|
+
*
|
|
54
|
+
* @param walletAccount - The wallet account to check.
|
|
55
|
+
* @returns True if the wallet account is a Solana wallet account, false otherwise.
|
|
56
|
+
*/
|
|
57
|
+
const isSolanaWalletAccount = (walletAccount) => walletAccount.chain === "SOL";
|
|
58
|
+
|
|
59
|
+
//#endregion
|
|
60
|
+
//#region src/isSolanaWalletProvider/isSolanaWalletProvider.ts
|
|
61
|
+
const isSolanaWalletProvider = (provider) => {
|
|
62
|
+
return provider.chain === "SOL";
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/signAllTransactions/signAllTransactions.ts
|
|
67
|
+
/**
|
|
68
|
+
* Signs multiple Solana transactions
|
|
69
|
+
* @param params.transactions - The transactions to sign
|
|
70
|
+
* @param params.walletAccount - The wallet account to sign the transactions with
|
|
71
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
72
|
+
* @returns An object containing the signed transactions
|
|
73
|
+
*/
|
|
74
|
+
const signAllTransactions = async ({ walletAccount, transactions }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
75
|
+
const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
|
|
76
|
+
if (!isSolanaWalletProvider(provider)) throw new NotSolanaProviderError({ providerKey: provider.key });
|
|
77
|
+
return provider.signAllTransactions({
|
|
78
|
+
transactions,
|
|
79
|
+
walletAccount
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
//#endregion
|
|
84
|
+
//#region src/signAndSendTransaction/signAndSendTransaction.ts
|
|
85
|
+
/**
|
|
86
|
+
* Signs and sends a Solana transaction
|
|
87
|
+
* @param params.transaction - The transaction to sign and send
|
|
88
|
+
* @param params.walletAccount - The wallet account to sign and send the transaction with
|
|
89
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
90
|
+
* @returns An object containing the signature
|
|
91
|
+
*/
|
|
92
|
+
const signAndSendTransaction = async ({ walletAccount, transaction }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
93
|
+
const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
|
|
94
|
+
if (!isSolanaWalletProvider(provider)) throw new NotSolanaProviderError({ providerKey: provider.key });
|
|
95
|
+
return provider.signAndSendTransaction({
|
|
96
|
+
transaction,
|
|
97
|
+
walletAccount
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
//#endregion
|
|
102
|
+
//#region src/signTransaction/signTransaction.ts
|
|
103
|
+
/**
|
|
104
|
+
* Signs a Solana transaction
|
|
105
|
+
* @param params.transaction - The transaction to sign
|
|
106
|
+
* @param params.walletAccount - The wallet account to sign the transaction with
|
|
107
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
108
|
+
* @returns An object containing the signed transaction
|
|
109
|
+
*/
|
|
110
|
+
const signTransaction = async ({ walletAccount, transaction }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
111
|
+
const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
|
|
112
|
+
if (!isSolanaWalletProvider(provider)) throw new NotSolanaProviderError({ providerKey: provider.key });
|
|
113
|
+
return provider.signTransaction({
|
|
114
|
+
transaction,
|
|
115
|
+
walletAccount
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
//#endregion
|
|
120
|
+
//#region src/exports/index.ts
|
|
121
|
+
(0, _dynamic_labs_sdk_assert_package_version.assertPackageVersion)(require_isVersionedTransaction.name, require_isVersionedTransaction.version);
|
|
122
|
+
|
|
123
|
+
//#endregion
|
|
124
|
+
exports.NotSolanaProviderError = NotSolanaProviderError;
|
|
125
|
+
exports.addSolanaExtension = addSolanaExtension;
|
|
126
|
+
exports.getSolanaConnection = require_addWaasSolanaExtension.getSolanaConnection;
|
|
127
|
+
exports.isSolanaNetworkProvider = isSolanaNetworkProvider;
|
|
128
|
+
exports.isSolanaWalletAccount = isSolanaWalletAccount;
|
|
129
|
+
exports.signAllTransactions = signAllTransactions;
|
|
130
|
+
exports.signAndSendTransaction = signAndSendTransaction;
|
|
131
|
+
exports.signTransaction = signTransaction;
|
|
132
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","names":["BaseError","packageName","packageVersion"],"sources":["../src/addSolanaExtension/addSolanaExtension.ts","../src/errors/NotSolanaProviderError/NotSolanaProviderError.ts","../src/isSolanaNetworkProvider/isSolanaNetworkProvider.ts","../src/isSolanaWalletAccount/isSolanaWalletAccount.ts","../src/isSolanaWalletProvider/isSolanaWalletProvider.ts","../src/signAllTransactions/signAllTransactions.ts","../src/signAndSendTransaction/signAndSendTransaction.ts","../src/signTransaction/signTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addWaasSolanaExtension } from '../waas/addWaasSolanaExtension';\nimport { addSolanaWalletStandardExtension } from '../walletStandard/addSolanaWalletStandardExtension';\n\n/**\n * Adds the Solana extension to the Dynamic client.\n *\n * This is a convenience function that adds both the Solana Wallet Standard extension\n * and the Dynamic WaaS Solana extension, enabling support for all Solana wallet types\n * including standard wallets and embedded wallets managed by Dynamic's infrastructure.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\nexport const addSolanaExtension = (client = getDefaultClient()): void => {\n addSolanaWalletStandardExtension(client);\n addWaasSolanaExtension(client);\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotSolanaProviderError extends BaseError {\n public readonly providerKey: string;\n\n constructor(params: { providerKey: string }) {\n super({\n cause: null,\n code: 'not_solana_provider_error',\n docsUrl: null,\n name: 'NotSolanaProviderError',\n shortMessage: 'Provider is not a Solana wallet provider',\n });\n\n this.providerKey = params.providerKey;\n }\n}\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { SolanaNetworkProvider } from '../SolanaNetworkProvider.types';\n\n/**\n * Type guard function to check if a network provider is a Solana network provider.\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is a Solana network provider, false otherwise.\n */\nexport const isSolanaNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is SolanaNetworkProvider => networkProvider.chain === 'SOL';\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { SolanaWalletAccount } from '../SolanaWalletAccount.types';\n\n/**\n * Type guard function to check if a wallet account is a Solana wallet account.\n *\n * @param walletAccount - The wallet account to check.\n * @returns True if the wallet account is a Solana wallet account, false otherwise.\n */\nexport const isSolanaWalletAccount = (\n walletAccount: WalletAccount\n): walletAccount is SolanaWalletAccount => walletAccount.chain === 'SOL';\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { SolanaWalletProvider } from '../SolanaWalletProvider.types';\n\nexport const isSolanaWalletProvider = (\n provider: WalletProvider\n): provider is SolanaWalletProvider => {\n return provider.chain === 'SOL';\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\nimport type { Transaction, VersionedTransaction } from '@solana/web3.js';\n\nimport type { SolanaWalletAccount } from '../SolanaWalletAccount.types';\nimport { NotSolanaProviderError } from '../errors/NotSolanaProviderError';\nimport { isSolanaWalletProvider } from '../isSolanaWalletProvider';\n\ntype SignAllTransactionsParams = {\n transactions: (Transaction | VersionedTransaction)[];\n walletAccount: SolanaWalletAccount;\n};\n\n/**\n * Signs multiple Solana transactions\n * @param params.transactions - The transactions to sign\n * @param params.walletAccount - The wallet account to sign the transactions with\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the signed transactions\n */\nexport const signAllTransactions = async (\n { walletAccount, transactions }: SignAllTransactionsParams,\n client = getDefaultClient()\n): Promise<{ signedTransactions: (Transaction | VersionedTransaction)[] }> => {\n const provider = getWalletProviderFromWalletAccount(\n {\n walletAccount,\n },\n client\n );\n\n if (!isSolanaWalletProvider(provider)) {\n throw new NotSolanaProviderError({ providerKey: provider.key });\n }\n\n return provider.signAllTransactions({ transactions, walletAccount });\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\nimport type { Transaction, VersionedTransaction } from '@solana/web3.js';\n\nimport type { SolanaWalletAccount } from '../SolanaWalletAccount.types';\nimport { NotSolanaProviderError } from '../errors/NotSolanaProviderError';\nimport { isSolanaWalletProvider } from '../isSolanaWalletProvider';\n\ntype SignAndSendTransactionParams = {\n transaction: Transaction | VersionedTransaction;\n walletAccount: SolanaWalletAccount;\n};\n\n/**\n * Signs and sends a Solana transaction\n * @param params.transaction - The transaction to sign and send\n * @param params.walletAccount - The wallet account to sign and send the transaction with\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the signature\n */\nexport const signAndSendTransaction = async (\n { walletAccount, transaction }: SignAndSendTransactionParams,\n client = getDefaultClient()\n): Promise<{ signature: string }> => {\n const provider = getWalletProviderFromWalletAccount(\n {\n walletAccount,\n },\n client\n );\n\n if (!isSolanaWalletProvider(provider)) {\n throw new NotSolanaProviderError({ providerKey: provider.key });\n }\n\n return provider.signAndSendTransaction({ transaction, walletAccount });\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\nimport type { Transaction, VersionedTransaction } from '@solana/web3.js';\n\nimport type { SolanaWalletAccount } from '../SolanaWalletAccount.types';\nimport { NotSolanaProviderError } from '../errors/NotSolanaProviderError';\nimport { isSolanaWalletProvider } from '../isSolanaWalletProvider';\n\ntype SignTransactionParams = {\n transaction: Transaction | VersionedTransaction;\n walletAccount: SolanaWalletAccount;\n};\n\n/**\n * Signs a Solana transaction\n * @param params.transaction - The transaction to sign\n * @param params.walletAccount - The wallet account to sign the transaction with\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the signed transaction\n */\nexport const signTransaction = async (\n { walletAccount, transaction }: SignTransactionParams,\n client = getDefaultClient()\n): Promise<{ signedTransaction: Transaction | VersionedTransaction }> => {\n const provider = getWalletProviderFromWalletAccount(\n {\n walletAccount,\n },\n client\n );\n\n if (!isSolanaWalletProvider(provider)) {\n throw new NotSolanaProviderError({ providerKey: provider.key });\n }\n\n return provider.signTransaction({ transaction, walletAccount });\n};\n","import { 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 { addSolanaExtension } from '../addSolanaExtension';\nexport { NotSolanaProviderError } from '../errors/NotSolanaProviderError';\nexport { getSolanaConnection } from '../getSolanaConnection';\nexport { isSolanaNetworkProvider } from '../isSolanaNetworkProvider';\nexport { isSolanaWalletAccount } from '../isSolanaWalletAccount';\nexport type { SolanaNetworkProvider } from '../SolanaNetworkProvider.types';\nexport type { SolanaWalletAccount } from '../SolanaWalletAccount.types';\n\nexport { signAllTransactions } from '../signAllTransactions';\nexport { signAndSendTransaction } from '../signAndSendTransaction';\nexport { signTransaction } from '../signTransaction';\n"],"mappings":";;;;;;;;;;;;;;;;;AAcA,MAAa,sBAAsB,8DAA2B,KAAW;AACvE,2EAAiC,OAAO;AACxC,uDAAuB,OAAO;;;;;ACdhC,IAAa,yBAAb,cAA4CA,mCAAU;CACpD,AAAgB;CAEhB,YAAY,QAAiC;AAC3C,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc;GACf,CAAC;AAEF,OAAK,cAAc,OAAO;;;;;;;;;;;;ACJ9B,MAAa,2BACX,oBAC6C,gBAAgB,UAAU;;;;;;;;;;ACFzE,MAAa,yBACX,kBACyC,cAAc,UAAU;;;;ACRnE,MAAa,0BACX,aACqC;AACrC,QAAO,SAAS,UAAU;;;;;;;;;;;;ACa5B,MAAa,sBAAsB,OACjC,EAAE,eAAe,gBACjB,yDAA2B,KACiD;CAC5E,MAAM,iFACJ,EACE,eACD,EACD,OACD;AAED,KAAI,CAAC,uBAAuB,SAAS,CACnC,OAAM,IAAI,uBAAuB,EAAE,aAAa,SAAS,KAAK,CAAC;AAGjE,QAAO,SAAS,oBAAoB;EAAE;EAAc;EAAe,CAAC;;;;;;;;;;;;ACftE,MAAa,yBAAyB,OACpC,EAAE,eAAe,eACjB,yDAA2B,KACQ;CACnC,MAAM,iFACJ,EACE,eACD,EACD,OACD;AAED,KAAI,CAAC,uBAAuB,SAAS,CACnC,OAAM,IAAI,uBAAuB,EAAE,aAAa,SAAS,KAAK,CAAC;AAGjE,QAAO,SAAS,uBAAuB;EAAE;EAAa;EAAe,CAAC;;;;;;;;;;;;ACfxE,MAAa,kBAAkB,OAC7B,EAAE,eAAe,eACjB,yDAA2B,KAC4C;CACvE,MAAM,iFACJ,EACE,eACD,EACD,OACD;AAED,KAAI,CAAC,uBAAuB,SAAS,CACnC,OAAM,IAAI,uBAAuB,EAAE,aAAa,SAAS,KAAK,CAAC;AAGjE,QAAO,SAAS,gBAAgB;EAAE;EAAa;EAAe,CAAC;;;;;mEC7B5CC,qCAAaC,uCAAe"}
|