@dynamic-labs-sdk/evm 1.29.0 → 1.30.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/{addEIP6963Extension-lfc2piWn.esm.js → addEIP6963Extension-g4FOMl7A.esm.js} +3 -3
- package/dist/{addEIP6963Extension-lfc2piWn.esm.js.map → addEIP6963Extension-g4FOMl7A.esm.js.map} +1 -1
- package/dist/{addEIP6963Extension-B-Yj_erx.cjs → addEIP6963Extension-gjlsf_jt.cjs} +3 -3
- package/dist/{addEIP6963Extension-B-Yj_erx.cjs.map → addEIP6963Extension-gjlsf_jt.cjs.map} +1 -1
- package/dist/{addWaasEvmExtension-TlgOhgjb.cjs → addWaasEvmExtension-CP2ibnvq.cjs} +3 -2
- package/dist/addWaasEvmExtension-CP2ibnvq.cjs.map +1 -0
- package/dist/{addWaasEvmExtension-BOLpfrNS.esm.js → addWaasEvmExtension-CyXCTxGv.esm.js} +3 -2
- package/dist/addWaasEvmExtension-CyXCTxGv.esm.js.map +1 -0
- package/dist/{addWaasEvmExtension-BtJ1wsDw.native.esm.js → addWaasEvmExtension-DYKWl5DG.native.esm.js} +3 -2
- package/dist/addWaasEvmExtension-DYKWl5DG.native.esm.js.map +1 -0
- package/dist/baseAccount.cjs +3 -3
- package/dist/baseAccount.esm.js +3 -3
- package/dist/baseAccount.native.esm.js +3 -3
- package/dist/core.cjs +1 -1
- package/dist/core.esm.js +1 -1
- package/dist/core.native.esm.js +1 -1
- package/dist/{createWalletProviderFromEIP1193Provider-D8pW4i-N.esm.js → createWalletProviderFromEIP1193Provider-CDRA4dpW.native.esm.js} +3 -2
- package/dist/createWalletProviderFromEIP1193Provider-CDRA4dpW.native.esm.js.map +1 -0
- package/dist/{createWalletProviderFromEIP1193Provider-BMGySIDa.cjs → createWalletProviderFromEIP1193Provider-E1WbEBET.cjs} +3 -2
- package/dist/createWalletProviderFromEIP1193Provider-E1WbEBET.cjs.map +1 -0
- package/dist/{createWalletProviderFromEIP1193Provider-DMYOz1Ta.native.esm.js → createWalletProviderFromEIP1193Provider-HOkyZ1dS.esm.js} +3 -2
- package/dist/createWalletProviderFromEIP1193Provider-HOkyZ1dS.esm.js.map +1 -0
- package/dist/eip6963.cjs +4 -4
- package/dist/eip6963.esm.js +4 -4
- package/dist/eip6963.native.esm.js +1 -1
- package/dist/{evmTransferAmount-BoVOzGQH.esm.js → evmTransferAmount-BQy79Fgj.esm.js} +59 -2
- package/dist/evmTransferAmount-BQy79Fgj.esm.js.map +1 -0
- package/dist/{evmTransferAmount-R_RbLZ1M.native.esm.js → evmTransferAmount-BftkuI-H.native.esm.js} +59 -2
- package/dist/evmTransferAmount-BftkuI-H.native.esm.js.map +1 -0
- package/dist/{evmTransferAmount-4QFpjuHa.cjs → evmTransferAmount-Ddvx91b0.cjs} +64 -1
- package/dist/evmTransferAmount-Ddvx91b0.cjs.map +1 -0
- package/dist/exports/index.d.ts +1 -0
- package/dist/exports/index.d.ts.map +1 -1
- package/dist/exports/walletConnect.d.ts.map +1 -1
- package/dist/gasless/activate7702Delegation/activate7702Delegation.d.ts +4 -3
- package/dist/gasless/activate7702Delegation/activate7702Delegation.d.ts.map +1 -1
- package/dist/gasless/relaySponsoredTransaction/relaySponsoredTransaction.d.ts +4 -3
- package/dist/gasless/relaySponsoredTransaction/relaySponsoredTransaction.d.ts.map +1 -1
- package/dist/gasless/sendSponsoredTransaction/sendSponsoredTransaction.d.ts +4 -3
- package/dist/gasless/sendSponsoredTransaction/sendSponsoredTransaction.d.ts.map +1 -1
- package/dist/gasless/waitForSponsoredTransaction/waitForSponsoredTransaction.d.ts +4 -3
- package/dist/gasless/waitForSponsoredTransaction/waitForSponsoredTransaction.d.ts.map +1 -1
- package/dist/index.cjs +54 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +56 -8
- package/dist/index.esm.js.map +1 -1
- package/dist/index.native.esm.js +54 -6
- package/dist/index.native.esm.js.map +1 -1
- package/dist/metamask.cjs +3 -3
- package/dist/metamask.esm.js +3 -3
- package/dist/metamask.native.esm.js +3 -3
- package/dist/{package-DKcW6gUw.native.esm.js → package-B7usQR9C.native.esm.js} +2 -2
- package/dist/package-B7usQR9C.native.esm.js.map +1 -0
- package/dist/{package-mDipDZ6L.esm.js → package-DZWMDfH9.esm.js} +2 -2
- package/dist/package-DZWMDfH9.esm.js.map +1 -0
- package/dist/{package-BNZU3yDo.cjs → package-Ju_0VcJL.cjs} +2 -2
- package/dist/package-Ju_0VcJL.cjs.map +1 -0
- package/dist/screenEvmTransactions/index.d.ts +2 -0
- package/dist/screenEvmTransactions/index.d.ts.map +1 -0
- package/dist/screenEvmTransactions/screenEvmTransactions.d.ts +48 -0
- package/dist/screenEvmTransactions/screenEvmTransactions.d.ts.map +1 -0
- package/dist/tempo.cjs +1 -1
- package/dist/tempo.esm.js +1 -1
- package/dist/tempo.native.esm.js +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/utils/approveErc20/approveErc20.d.ts +4 -3
- package/dist/utils/approveErc20/approveErc20.d.ts.map +1 -1
- package/dist/utils/approveErc20IfRequiredAndWaitReceipt/approveErc20IfRequiredAndWaitReceipt.d.ts +4 -3
- package/dist/utils/approveErc20IfRequiredAndWaitReceipt/approveErc20IfRequiredAndWaitReceipt.d.ts.map +1 -1
- package/dist/utils/createWalletProviderFromEIP1193Provider/createWalletProviderFromEIP1193Provider.d.ts.map +1 -1
- package/dist/utils/createWalletProviderFromEIP1193Provider/isUnrecognizedChainError/isUnrecognizedChainError.d.ts.map +1 -1
- package/dist/utils/evmExecuteYieldTransaction/evmExecuteYieldTransaction.d.ts +21 -0
- package/dist/utils/evmExecuteYieldTransaction/evmExecuteYieldTransaction.d.ts.map +1 -0
- package/dist/utils/evmExecuteYieldTransaction/index.d.ts +2 -0
- package/dist/utils/evmExecuteYieldTransaction/index.d.ts.map +1 -0
- package/dist/utils/evmTransferAmount/evmTransferAmount.d.ts +5 -3
- package/dist/utils/evmTransferAmount/evmTransferAmount.d.ts.map +1 -1
- package/dist/viem.cjs +1 -1
- package/dist/viem.esm.js +1 -1
- package/dist/viem.native.esm.js +1 -1
- package/dist/waas/utils/createWalletProviderForWaasEvm/createWalletProviderForWaasEvm.d.ts.map +1 -1
- package/dist/waas/utils/createWalletProviderForWaasEvm/signTypedData/signTypedData.d.ts.map +1 -1
- package/dist/waas.cjs +3 -3
- package/dist/waas.esm.js +3 -3
- package/dist/waas.native.esm.js +3 -3
- package/dist/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.d.ts.map +1 -1
- package/dist/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.d.ts.map +1 -1
- package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.d.ts.map +1 -1
- package/dist/walletConnect.cjs +3 -2
- package/dist/walletConnect.cjs.map +1 -1
- package/dist/walletConnect.esm.js +3 -2
- package/dist/walletConnect.esm.js.map +1 -1
- package/dist/walletConnect.native.esm.js +3 -2
- package/dist/walletConnect.native.esm.js.map +1 -1
- package/dist/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.d.ts.map +1 -1
- package/dist/windowInjected.cjs +3 -3
- package/dist/windowInjected.cjs.map +1 -1
- package/dist/windowInjected.esm.js +3 -3
- package/dist/windowInjected.esm.js.map +1 -1
- package/dist/windowInjected.native.esm.js +3 -3
- package/dist/windowInjected.native.esm.js.map +1 -1
- package/package.json +8 -8
- package/dist/addWaasEvmExtension-BOLpfrNS.esm.js.map +0 -1
- package/dist/addWaasEvmExtension-BtJ1wsDw.native.esm.js.map +0 -1
- package/dist/addWaasEvmExtension-TlgOhgjb.cjs.map +0 -1
- package/dist/createWalletProviderFromEIP1193Provider-BMGySIDa.cjs.map +0 -1
- package/dist/createWalletProviderFromEIP1193Provider-D8pW4i-N.esm.js.map +0 -1
- package/dist/createWalletProviderFromEIP1193Provider-DMYOz1Ta.native.esm.js.map +0 -1
- package/dist/evmTransferAmount-4QFpjuHa.cjs.map +0 -1
- package/dist/evmTransferAmount-BoVOzGQH.esm.js.map +0 -1
- package/dist/evmTransferAmount-R_RbLZ1M.native.esm.js.map +0 -1
- package/dist/package-BNZU3yDo.cjs.map +0 -1
- package/dist/package-DKcW6gUw.native.esm.js.map +0 -1
- package/dist/package-mDipDZ6L.esm.js.map +0 -1
|
@@ -6,6 +6,9 @@ type ApproveErc20Params = {
|
|
|
6
6
|
tokenAddress: string;
|
|
7
7
|
walletAccount: EvmWalletAccount;
|
|
8
8
|
};
|
|
9
|
+
type ApproveErc20Result = {
|
|
10
|
+
transactionHash: string;
|
|
11
|
+
};
|
|
9
12
|
/**
|
|
10
13
|
* Sends an ERC-20 `approve` transaction, granting a spender an allowance
|
|
11
14
|
* to transfer tokens on behalf of the wallet account.
|
|
@@ -21,8 +24,6 @@ type ApproveErc20Params = {
|
|
|
21
24
|
* @returns The approval transaction hash.
|
|
22
25
|
* @notInstrumented
|
|
23
26
|
*/
|
|
24
|
-
export declare const approveErc20: ({ amount, spenderAddress, tokenAddress, walletAccount }: ApproveErc20Params, client: DynamicClient) => Promise<
|
|
25
|
-
transactionHash: string;
|
|
26
|
-
}>;
|
|
27
|
+
export declare const approveErc20: ({ amount, spenderAddress, tokenAddress, walletAccount }: ApproveErc20Params, client: DynamicClient) => Promise<ApproveErc20Result>;
|
|
27
28
|
export {};
|
|
28
29
|
//# sourceMappingURL=approveErc20.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approveErc20.d.ts","sourceRoot":"","sources":["../../../src/utils/approveErc20/approveErc20.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,GACvB,yDAAyD,kBAAkB,EAC3E,QAAQ,aAAa,KACpB,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"approveErc20.d.ts","sourceRoot":"","sources":["../../../src/utils/approveErc20/approveErc20.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,GACvB,yDAAyD,kBAAkB,EAC3E,QAAQ,aAAa,KACpB,OAAO,CAAC,kBAAkB,CAkB5B,CAAC"}
|
package/dist/utils/approveErc20IfRequiredAndWaitReceipt/approveErc20IfRequiredAndWaitReceipt.d.ts
CHANGED
|
@@ -7,6 +7,9 @@ type ApproveErc20IfRequiredAndWaitReceiptParams = {
|
|
|
7
7
|
tokenAddress: string;
|
|
8
8
|
walletAccount: EvmWalletAccount;
|
|
9
9
|
};
|
|
10
|
+
type ApproveErc20IfRequiredAndWaitReceiptResult = {
|
|
11
|
+
receipt: TransactionReceipt;
|
|
12
|
+
};
|
|
10
13
|
/**
|
|
11
14
|
* Approves an ERC-20 token if the current allowance is insufficient and waits for the transaction receipt.
|
|
12
15
|
*
|
|
@@ -19,8 +22,6 @@ type ApproveErc20IfRequiredAndWaitReceiptParams = {
|
|
|
19
22
|
* @returns The transaction receipt if an approval was sent, otherwise undefined.
|
|
20
23
|
* @notInstrumented
|
|
21
24
|
*/
|
|
22
|
-
export declare const approveErc20IfRequiredAndWaitReceipt: ({ amount, spenderAddress, tokenAddress, walletAccount, }: ApproveErc20IfRequiredAndWaitReceiptParams, client: DynamicClient) => Promise<
|
|
23
|
-
receipt: TransactionReceipt;
|
|
24
|
-
} | undefined>;
|
|
25
|
+
export declare const approveErc20IfRequiredAndWaitReceipt: ({ amount, spenderAddress, tokenAddress, walletAccount, }: ApproveErc20IfRequiredAndWaitReceiptParams, client: DynamicClient) => Promise<ApproveErc20IfRequiredAndWaitReceiptResult | undefined>;
|
|
25
26
|
export {};
|
|
26
27
|
//# sourceMappingURL=approveErc20IfRequiredAndWaitReceipt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approveErc20IfRequiredAndWaitReceipt.d.ts","sourceRoot":"","sources":["../../../src/utils/approveErc20IfRequiredAndWaitReceipt/approveErc20IfRequiredAndWaitReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKrE,KAAK,0CAA0C,GAAG;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oCAAoC,GAC/C,0DAKG,0CAA0C,EAC7C,QAAQ,aAAa,KACpB,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"approveErc20IfRequiredAndWaitReceipt.d.ts","sourceRoot":"","sources":["../../../src/utils/approveErc20IfRequiredAndWaitReceipt/approveErc20IfRequiredAndWaitReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKrE,KAAK,0CAA0C,GAAG;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF,KAAK,0CAA0C,GAAG;IAChD,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oCAAoC,GAC/C,0DAKG,0CAA0C,EAC7C,QAAQ,aAAa,KACpB,OAAO,CAAC,0CAA0C,GAAG,SAAS,CAkDhE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWalletProviderFromEIP1193Provider.d.ts","sourceRoot":"","sources":["../../../src/utils/createWalletProviderFromEIP1193Provider/createWalletProviderFromEIP1193Provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAS,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"createWalletProviderFromEIP1193Provider.d.ts","sourceRoot":"","sources":["../../../src/utils/createWalletProviderFromEIP1193Provider/createWalletProviderFromEIP1193Provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAS,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AASvC,KAAK,6CAA6C,GAAG;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,uCAAuC,GAClD,qDAKG,6CAA6C,EAChD,QAAQ,aAAa,KACpB,iBA4IF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isUnrecognizedChainError.d.ts","sourceRoot":"","sources":["../../../../src/utils/createWalletProviderFromEIP1193Provider/isUnrecognizedChainError/isUnrecognizedChainError.ts"],"names":[],"mappings":"AAOA,uBAAuB;AAEvB,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"isUnrecognizedChainError.d.ts","sourceRoot":"","sources":["../../../../src/utils/createWalletProviderFromEIP1193Provider/isUnrecognizedChainError/isUnrecognizedChainError.ts"],"names":[],"mappings":"AAOA,uBAAuB;AAEvB,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,KAAG,OAiBxD,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type DynamicClient } from '@dynamic-labs-sdk/client';
|
|
2
|
+
import { type ExecuteYieldTransactionParams, type ExecuteYieldTransactionResult } from '@dynamic-labs-sdk/client/core';
|
|
3
|
+
/**
|
|
4
|
+
* Executes an EVM yield vault action by handling optional ERC-20 approval
|
|
5
|
+
* and sending the main vault transaction on-chain.
|
|
6
|
+
*
|
|
7
|
+
* 1. Validates that the wallet account is an EVM wallet account
|
|
8
|
+
* 2. If the signing payload includes an `evmApproval`, checks the current
|
|
9
|
+
* ERC-20 allowance and sends an approve transaction when insufficient
|
|
10
|
+
* 3. Sends the main transaction using the viem wallet client, logging the
|
|
11
|
+
* wallet hand-off at debug level right beforehand
|
|
12
|
+
*
|
|
13
|
+
* @param params.signingPayload - The signing payload containing `evmTransaction` and optional `evmApproval`.
|
|
14
|
+
* @param params.walletAccount - The wallet account used to sign and send transactions.
|
|
15
|
+
* @param params.onStepChange - Optional callback invoked with `'approval'` or `'transaction'` as each step begins.
|
|
16
|
+
* @param client - The Dynamic client instance.
|
|
17
|
+
* @returns The vault transaction hash.
|
|
18
|
+
* @notInstrumented
|
|
19
|
+
*/
|
|
20
|
+
export declare const evmExecuteYieldTransaction: ({ onStepChange, signingPayload, walletAccount, }: ExecuteYieldTransactionParams, client: DynamicClient) => Promise<ExecuteYieldTransactionResult>;
|
|
21
|
+
//# sourceMappingURL=evmExecuteYieldTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evmExecuteYieldTransaction.d.ts","sourceRoot":"","sources":["../../../src/utils/evmExecuteYieldTransaction/evmExecuteYieldTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAGnC,MAAM,+BAA+B,CAAC;AAMvC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,0BAA0B,GACrC,kDAIG,6BAA6B,EAChC,QAAQ,aAAa,KACpB,OAAO,CAAC,6BAA6B,CA0EvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/evmExecuteYieldTransaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { type DynamicClient } from '@dynamic-labs-sdk/client';
|
|
2
2
|
import type { TransferAmountParams } from '@dynamic-labs-sdk/client/core';
|
|
3
|
-
|
|
4
|
-
export declare const evmTransferAmount: ({ amount, recipient, token, walletAccount }: TransferAmountParams, client: DynamicClient) => Promise<{
|
|
3
|
+
type EvmTransferAmountResult = {
|
|
5
4
|
transactionHash: string;
|
|
6
|
-
}
|
|
5
|
+
};
|
|
6
|
+
/** @notInstrumented */
|
|
7
|
+
export declare const evmTransferAmount: ({ amount, recipient, token, walletAccount }: TransferAmountParams, client: DynamicClient) => Promise<EvmTransferAmountResult>;
|
|
8
|
+
export {};
|
|
7
9
|
//# sourceMappingURL=evmTransferAmount.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evmTransferAmount.d.ts","sourceRoot":"","sources":["../../../src/utils/evmTransferAmount/evmTransferAmount.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAS1E,uBAAuB;AACvB,eAAO,MAAM,iBAAiB,GAC5B,6CAA6C,oBAAoB,EACjE,QAAQ,aAAa,KACpB,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"evmTransferAmount.d.ts","sourceRoot":"","sources":["../../../src/utils/evmTransferAmount/evmTransferAmount.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAS1E,KAAK,uBAAuB,GAAG;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,uBAAuB;AACvB,eAAO,MAAM,iBAAiB,GAC5B,6CAA6C,oBAAoB,EACjE,QAAQ,aAAa,KACpB,OAAO,CAAC,uBAAuB,CAiDjC,CAAC"}
|
package/dist/viem.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_package = require('./package-
|
|
1
|
+
const require_package = require('./package-Ju_0VcJL.cjs');
|
|
2
2
|
const require_createPublicClientFromNetworkData = require('./createPublicClientFromNetworkData-BAC8YTrK.cjs');
|
|
3
3
|
const require_mapNetworkDataToViemChain = require('./mapNetworkDataToViemChain-BoRJEvJf.cjs');
|
|
4
4
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
package/dist/viem.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as version, t as name } from "./package-
|
|
1
|
+
import { n as version, t as name } from "./package-DZWMDfH9.esm.js";
|
|
2
2
|
import { n as createWalletClientForWalletAccount, t as createPublicClientFromNetworkData } from "./createPublicClientFromNetworkData-CKikh3WW.esm.js";
|
|
3
3
|
import { t as mapNetworkDataToViemChain } from "./mapNetworkDataToViemChain-Dr5Vws1-.esm.js";
|
|
4
4
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
package/dist/viem.native.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as version, t as name } from "./package-
|
|
1
|
+
import { n as version, t as name } from "./package-B7usQR9C.native.esm.js";
|
|
2
2
|
import { n as createWalletClientForWalletAccount, t as createPublicClientFromNetworkData } from "./createPublicClientFromNetworkData-9g8Hsu4A.native.esm.js";
|
|
3
3
|
import { t as mapNetworkDataToViemChain } from "./mapNetworkDataToViemChain-BOVFIupF.native.esm.js";
|
|
4
4
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
package/dist/waas/utils/createWalletProviderForWaasEvm/createWalletProviderForWaasEvm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWalletProviderForWaasEvm.d.ts","sourceRoot":"","sources":["../../../../src/waas/utils/createWalletProviderForWaasEvm/createWalletProviderForWaasEvm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"createWalletProviderForWaasEvm.d.ts","sourceRoot":"","sources":["../../../../src/waas/utils/createWalletProviderForWaasEvm/createWalletProviderForWaasEvm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAmB1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG/E,KAAK,oCAAoC,GAAG;IAC1C,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,8BAA8B,GAAI,oBAE5C,oCAAoC,KAAG,qBA8FzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signTypedData.d.ts","sourceRoot":"","sources":["../../../../../src/waas/utils/createWalletProviderForWaasEvm/signTypedData/signTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAGtC,KAAK,mBAAmB,GAAG;IACzB,SAAS,EAAE,SAAS,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAClD,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,uBAAuB;AAEvB,eAAO,MAAM,aAAa,GACxB,4CAA4C,mBAAmB,EAC/D,eAAe,aAAa,
|
|
1
|
+
{"version":3,"file":"signTypedData.d.ts","sourceRoot":"","sources":["../../../../../src/waas/utils/createWalletProviderForWaasEvm/signTypedData/signTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAGtC,KAAK,mBAAmB,GAAG;IACzB,SAAS,EAAE,SAAS,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAClD,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,uBAAuB;AAEvB,eAAO,MAAM,aAAa,GACxB,4CAA4C,mBAAmB,EAC/D,eAAe,aAAa,KAC3B,OAAO,CAAC,MAAM,CA+BhB,CAAC"}
|
package/dist/waas.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const require_package = require('./package-
|
|
2
|
-
require('./evmTransferAmount-
|
|
1
|
+
const require_package = require('./package-Ju_0VcJL.cjs');
|
|
2
|
+
require('./evmTransferAmount-Ddvx91b0.cjs');
|
|
3
3
|
require('./createPublicClientFromNetworkData-BAC8YTrK.cjs');
|
|
4
|
-
const require_addWaasEvmExtension = require('./addWaasEvmExtension-
|
|
4
|
+
const require_addWaasEvmExtension = require('./addWaasEvmExtension-CP2ibnvq.cjs');
|
|
5
5
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
|
6
6
|
|
|
7
7
|
//#region src/exports/waas.ts
|
package/dist/waas.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as version, t as name } from "./package-
|
|
2
|
-
import "./evmTransferAmount-
|
|
1
|
+
import { n as version, t as name } from "./package-DZWMDfH9.esm.js";
|
|
2
|
+
import "./evmTransferAmount-BQy79Fgj.esm.js";
|
|
3
3
|
import "./createPublicClientFromNetworkData-CKikh3WW.esm.js";
|
|
4
|
-
import { t as addWaasEvmExtension } from "./addWaasEvmExtension-
|
|
4
|
+
import { t as addWaasEvmExtension } from "./addWaasEvmExtension-CyXCTxGv.esm.js";
|
|
5
5
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
6
6
|
|
|
7
7
|
//#region src/exports/waas.ts
|
package/dist/waas.native.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as version, t as name } from "./package-
|
|
2
|
-
import "./evmTransferAmount-
|
|
1
|
+
import { n as version, t as name } from "./package-B7usQR9C.native.esm.js";
|
|
2
|
+
import "./evmTransferAmount-BftkuI-H.native.esm.js";
|
|
3
3
|
import "./createPublicClientFromNetworkData-9g8Hsu4A.native.esm.js";
|
|
4
|
-
import { t as addWaasEvmExtension } from "./addWaasEvmExtension-
|
|
4
|
+
import { t as addWaasEvmExtension } from "./addWaasEvmExtension-DYKWl5DG.native.esm.js";
|
|
5
5
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
6
6
|
|
|
7
7
|
//#region src/exports/waas.ts
|
package/dist/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addWalletConnectEvmExtension.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gCAAgC,qBAAqB,CAAC;AAEnE,uBAAuB;AACvB,eAAO,MAAM,4BAA4B,GACvC,yDAA2B,
|
|
1
|
+
{"version":3,"file":"addWalletConnectEvmExtension.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gCAAgC,qBAAqB,CAAC;AAEnE,uBAAuB;AACvB,eAAO,MAAM,4BAA4B,GACvC,yDAA2B,KAC1B,OAAO,CAAC,IAAI,CAWd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWalletProviderFromEIP155Session.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"createWalletProviderFromEIP155Session.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AA2B9D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAE9F,KAAK,2CAA2C,GAAG;IACjD,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAaF,uBAAuB;AACvB,eAAO,MAAM,qCAAqC,GAChD,kBAAkB,2CAA2C,EAC7D,QAAQ,aAAa,KACpB,OAAO,CAAC,8BAA8B,CA0MxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recoverEvmWalletConnectWalletProviders.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAU9D,uBAAuB;AACvB,eAAO,MAAM,sCAAsC,GACjD,QAAQ,aAAa,
|
|
1
|
+
{"version":3,"file":"recoverEvmWalletConnectWalletProviders.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAU9D,uBAAuB;AACvB,eAAO,MAAM,sCAAsC,GACjD,QAAQ,aAAa,KACpB,OAAO,CAAC,IAAI,CAiCd,CAAC"}
|
package/dist/walletConnect.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_package = require('./package-
|
|
2
|
-
const require_evmTransferAmount = require('./evmTransferAmount-
|
|
1
|
+
const require_package = require('./package-Ju_0VcJL.cjs');
|
|
2
|
+
const require_evmTransferAmount = require('./evmTransferAmount-Ddvx91b0.cjs');
|
|
3
3
|
require('./createPublicClientFromNetworkData-BAC8YTrK.cjs');
|
|
4
4
|
const require_getEvmNetworksData = require('./getEvmNetworksData-DBJIMiOH.cjs');
|
|
5
5
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
|
@@ -130,6 +130,7 @@ const createWalletProviderFromEIP155Session = async ({ sessionTopic }, client) =
|
|
|
130
130
|
return getEventEmitter();
|
|
131
131
|
},
|
|
132
132
|
executeSwapTransaction: (args) => require_evmTransferAmount.evmExecuteSwapTransaction(args, client),
|
|
133
|
+
executeYieldTransaction: (args) => require_evmTransferAmount.evmExecuteYieldTransaction(args, client),
|
|
133
134
|
formatWalletAddress,
|
|
134
135
|
getActiveNetworkId,
|
|
135
136
|
getConnectedAddresses,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletConnect.cjs","names":["methodsThatRequireUserAction: string[]","SessionClosedUnexpectedlyError","WalletProviderEnum","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","viemGetAddress","destroy: NonNullable<\n WalletConnectEvmWalletProvider['destroy']\n >","SDK_ERRORS","evmConfirmTransaction","evmExecuteSwapTransaction","evmTransferAmount","WalletProviderPriority","CHAINS_INFO_MAP","getEvmNetworksData","getEvmNetworksData","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getCore,\n getWalletProviderRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { SessionClosedUnexpectedlyError } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n createWalletConnectSessionEventEmitter,\n getSignClient,\n splitCaip10Token,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport type { EIP1193ProviderRequest } from '../../EvmWalletProvider.types';\nimport { evmConfirmTransaction } from '../../utils/evmConfirmTransaction';\nimport { evmExecuteSwapTransaction } from '../../utils/evmExecuteSwapTransaction';\nimport { evmTransferAmount } from '../../utils/evmTransferAmount';\nimport type { evmMethods } from '../consts';\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n sessionTopic: string;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction: string[] = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n] satisfies (typeof evmMethods)[number][];\n\n/** @notInstrumented */\nexport const createWalletProviderFromEIP155Session = async (\n { sessionTopic }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const signClient = await getSignClient(client);\n\n const { logger } = getCore(client);\n\n const getSession = () => {\n const session = signClient.session.get(sessionTopic);\n\n if (!session) {\n // destroy never throws (it logs internally), but explicit .catch makes\n // the fire-and-forget intent obvious and silences static analyzers.\n destroy().catch(() => undefined);\n\n throw new SessionClosedUnexpectedlyError({\n sessionTopic,\n walletDisplayName: displayName,\n });\n }\n\n return session;\n };\n\n const displayName = getSession().peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: sessionTopic,\n walletProviderType,\n });\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () => {\n // Assert the session is still valid\n getSession();\n\n return await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n };\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n // Assert the session is still valid\n getSession();\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const request: WalletConnectEvmWalletProvider['request'] = async <\n T = unknown\n >(\n args: EIP1193ProviderRequest\n ): Promise<T> => {\n const { networkId } = await getActiveNetworkId();\n\n const session = getSession();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n try {\n const result = await signClient.request<T>({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: sessionTopic,\n });\n\n return result;\n } catch (err) {\n logger.debug(\n '[createWalletProviderFromEIP155Session] Error requesting from signClient',\n { error: err, method: args.method, networkId }\n );\n\n // WC sessions don't always advertise eth_chainId in their namespaces.methods,\n // so the wallet may reject it. Fall back to the locally known networkId.\n if (args.method === 'eth_chainId') {\n return `0x${Number(networkId).toString(16)}` as never;\n }\n throw err;\n }\n };\n\n /**\n * We actually clear up the entire WC session and its wallet provider\n */\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => destroy();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n getSession().namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletConnectSessionEventEmitter({\n formatAddress: viemGetAddress,\n getSession,\n namespaceKey,\n sessionTopic,\n signClient,\n });\n\n const destroy: NonNullable<\n WalletConnectEvmWalletProvider['destroy']\n > = async () => {\n cleanupEventEmitter();\n try {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: sessionTopic,\n });\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n walletProviderRegistry.unregister(key);\n } catch (err) {\n getCore(client).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n return {\n chain: 'EVM',\n confirmTransaction: (args) => evmConfirmTransaction(args, client),\n destroy,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n executeSwapTransaction: (args) => evmExecuteSwapTransaction(args, client),\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n getSession,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: getSession().peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n signMessage,\n switchActiveNetwork,\n transferAmount: (args) => evmTransferAmount(args, client),\n walletProviderType,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n WalletProviderPriority,\n getWalletProviderRegistry,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport { getSignClient } from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/** @notInstrumented */\nexport const recoverEvmWalletConnectWalletProviders = async (\n client: DynamicClient\n) => {\n await waitForProjectSettings(client);\n\n const signClient = await getSignClient(client);\n\n /**\n * Recreate the wallet providers for all existing EVM sessions\n */\n const sessions = signClient.session.getAll();\n\n const currentTime = Math.floor(Date.now() / 1000);\n\n for (const session of sessions) {\n if (!('eip155' in session.namespaces)) {\n continue;\n }\n\n if (session.expiry <= currentTime) {\n continue;\n }\n\n const walletProvider = await createWalletProviderFromEIP155Session(\n {\n sessionTopic: session.topic,\n },\n client\n );\n\n getWalletProviderRegistry(client).register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n }\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport { registerExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { recoverEvmWalletConnectWalletProviders } from '../recoverEvmWalletConnectWalletProviders';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\n/** @notInstrumented */\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n) => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n await recoverEvmWalletConnectWalletProviders(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n] as const;\n","import {\n assertDefined,\n assertNonEmptyArray,\n createSignInMessageStatement,\n getAppMetadata,\n getCore,\n getDefaultClient,\n getNonce,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { getEvmNetworksData } from '../../utils/getEvmNetworksData';\nimport { evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n * @notInstrumented\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n\n const { appUniversalLink } = getAppMetadata(client);\n\n assertDefined(appUniversalLink, 'Universal link is not set');\n\n const url = new URL(appUniversalLink);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available. Read through\n * getNetworksData (via the EVM helper) rather than raw project settings so\n * client-side network transformers apply to the chains advertised in the\n * WalletConnect session.\n */\n const evmNetworks = getEvmNetworksData(client).sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertNonEmptyArray(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const nonce = await getNonce(client);\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods as unknown as string[],\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse(\n {\n authResponse,\n chain: 'EVM',\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n )\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n assertNonEmptyArray,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { getEvmNetworksData } from '../../utils/getEvmNetworksData';\nimport { evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\n/** @notInstrumented */\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n // Read through getNetworksData (via the EVM helper) rather than raw project\n // settings so client-side network transformers apply to the chains\n // advertised in the WalletConnect session.\n const evmNetworks = getEvmNetworksData(client);\n\n assertNonEmptyArray(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods as unknown as string[],\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n {\n addToDynamicWalletAccounts,\n sessionTopic: session.topic,\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\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 { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"walletConnect.cjs","names":["methodsThatRequireUserAction: string[]","SessionClosedUnexpectedlyError","WalletProviderEnum","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","viemGetAddress","destroy: NonNullable<\n WalletConnectEvmWalletProvider['destroy']\n >","SDK_ERRORS","evmConfirmTransaction","evmExecuteSwapTransaction","evmExecuteYieldTransaction","evmTransferAmount","WalletProviderPriority","CHAINS_INFO_MAP","getEvmNetworksData","getEvmNetworksData","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getCore,\n getWalletProviderRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { SessionClosedUnexpectedlyError } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n createWalletConnectSessionEventEmitter,\n getSignClient,\n splitCaip10Token,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport type { EIP1193ProviderRequest } from '../../EvmWalletProvider.types';\nimport { evmConfirmTransaction } from '../../utils/evmConfirmTransaction';\nimport { evmExecuteSwapTransaction } from '../../utils/evmExecuteSwapTransaction';\nimport { evmExecuteYieldTransaction } from '../../utils/evmExecuteYieldTransaction';\nimport { evmTransferAmount } from '../../utils/evmTransferAmount';\nimport type { evmMethods } from '../consts';\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n sessionTopic: string;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction: string[] = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n] satisfies (typeof evmMethods)[number][];\n\n/** @notInstrumented */\nexport const createWalletProviderFromEIP155Session = async (\n { sessionTopic }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const signClient = await getSignClient(client);\n\n const { logger } = getCore(client);\n\n const getSession = () => {\n const session = signClient.session.get(sessionTopic);\n\n if (!session) {\n // destroy never throws (it logs internally), but explicit .catch makes\n // the fire-and-forget intent obvious and silences static analyzers.\n destroy().catch(() => undefined);\n\n throw new SessionClosedUnexpectedlyError({\n sessionTopic,\n walletDisplayName: displayName,\n });\n }\n\n return session;\n };\n\n const displayName = getSession().peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: sessionTopic,\n walletProviderType,\n });\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () => {\n // Assert the session is still valid\n getSession();\n\n return await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n };\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n // Assert the session is still valid\n getSession();\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const request: WalletConnectEvmWalletProvider['request'] = async <\n T = unknown\n >(\n args: EIP1193ProviderRequest\n ): Promise<T> => {\n const { networkId } = await getActiveNetworkId();\n\n const session = getSession();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n try {\n const result = await signClient.request<T>({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: sessionTopic,\n });\n\n return result;\n } catch (err) {\n logger.debug(\n '[createWalletProviderFromEIP155Session] Error requesting from signClient',\n { error: err, method: args.method, networkId }\n );\n\n // WC sessions don't always advertise eth_chainId in their namespaces.methods,\n // so the wallet may reject it. Fall back to the locally known networkId.\n if (args.method === 'eth_chainId') {\n return `0x${Number(networkId).toString(16)}` as never;\n }\n throw err;\n }\n };\n\n /**\n * We actually clear up the entire WC session and its wallet provider\n */\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => destroy();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n getSession().namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletConnectSessionEventEmitter({\n formatAddress: viemGetAddress,\n getSession,\n namespaceKey,\n sessionTopic,\n signClient,\n });\n\n const destroy: NonNullable<\n WalletConnectEvmWalletProvider['destroy']\n > = async () => {\n cleanupEventEmitter();\n try {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: sessionTopic,\n });\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n walletProviderRegistry.unregister(key);\n } catch (err) {\n getCore(client).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n return {\n chain: 'EVM',\n confirmTransaction: (args) => evmConfirmTransaction(args, client),\n destroy,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n executeSwapTransaction: (args) => evmExecuteSwapTransaction(args, client),\n executeYieldTransaction: (args) =>\n evmExecuteYieldTransaction(args, client),\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n getSession,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: getSession().peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n signMessage,\n switchActiveNetwork,\n transferAmount: (args) => evmTransferAmount(args, client),\n walletProviderType,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n WalletProviderPriority,\n getWalletProviderRegistry,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport { getSignClient } from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/** @notInstrumented */\nexport const recoverEvmWalletConnectWalletProviders = async (\n client: DynamicClient\n): Promise<void> => {\n await waitForProjectSettings(client);\n\n const signClient = await getSignClient(client);\n\n /**\n * Recreate the wallet providers for all existing EVM sessions\n */\n const sessions = signClient.session.getAll();\n\n const currentTime = Math.floor(Date.now() / 1000);\n\n for (const session of sessions) {\n if (!('eip155' in session.namespaces)) {\n continue;\n }\n\n if (session.expiry <= currentTime) {\n continue;\n }\n\n const walletProvider = await createWalletProviderFromEIP155Session(\n {\n sessionTopic: session.topic,\n },\n client\n );\n\n getWalletProviderRegistry(client).register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n }\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport { registerExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { recoverEvmWalletConnectWalletProviders } from '../recoverEvmWalletConnectWalletProviders';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\n/** @notInstrumented */\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n): Promise<void> => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n await recoverEvmWalletConnectWalletProviders(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n] as const;\n","import {\n assertDefined,\n assertNonEmptyArray,\n createSignInMessageStatement,\n getAppMetadata,\n getCore,\n getDefaultClient,\n getNonce,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { getEvmNetworksData } from '../../utils/getEvmNetworksData';\nimport { evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n * @notInstrumented\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n\n const { appUniversalLink } = getAppMetadata(client);\n\n assertDefined(appUniversalLink, 'Universal link is not set');\n\n const url = new URL(appUniversalLink);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available. Read through\n * getNetworksData (via the EVM helper) rather than raw project settings so\n * client-side network transformers apply to the chains advertised in the\n * WalletConnect session.\n */\n const evmNetworks = getEvmNetworksData(client).sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertNonEmptyArray(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const nonce = await getNonce(client);\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods as unknown as string[],\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse(\n {\n authResponse,\n chain: 'EVM',\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n )\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n assertNonEmptyArray,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { getEvmNetworksData } from '../../utils/getEvmNetworksData';\nimport { evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\n/** @notInstrumented */\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n // Read through getNetworksData (via the EVM helper) rather than raw project\n // settings so client-side network transformers apply to the chains\n // advertised in the WalletConnect session.\n const evmNetworks = getEvmNetworksData(client);\n\n assertNonEmptyArray(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods as unknown as string[],\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n {\n addToDynamicWalletAccounts,\n sessionTopic: session.topic,\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\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\n// TODO: on the v2 major release, move @dynamic-labs-sdk/wallet-connect and the\n// @walletconnect/* dependencies of this package to optional peer dependencies,\n// so apps that never connect external wallets don't install them at all.\n// The same applies to @dynamic-labs-sdk/solana.\nexport { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as version, t as name } from "./package-
|
|
2
|
-
import {
|
|
1
|
+
import { n as version, t as name } from "./package-DZWMDfH9.esm.js";
|
|
2
|
+
import { a as evmConfirmTransaction, n as evmExecuteYieldTransaction, r as evmExecuteSwapTransaction, s as registerEvmNetworkProviderBuilder, t as evmTransferAmount } from "./evmTransferAmount-BQy79Fgj.esm.js";
|
|
3
3
|
import "./createPublicClientFromNetworkData-CKikh3WW.esm.js";
|
|
4
4
|
import { t as getEvmNetworksData } from "./getEvmNetworksData-ChkgLvCg.esm.js";
|
|
5
5
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
@@ -130,6 +130,7 @@ const createWalletProviderFromEIP155Session = async ({ sessionTopic }, client) =
|
|
|
130
130
|
return getEventEmitter();
|
|
131
131
|
},
|
|
132
132
|
executeSwapTransaction: (args) => evmExecuteSwapTransaction(args, client),
|
|
133
|
+
executeYieldTransaction: (args) => evmExecuteYieldTransaction(args, client),
|
|
133
134
|
formatWalletAddress,
|
|
134
135
|
getActiveNetworkId,
|
|
135
136
|
getConnectedAddresses,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletConnect.esm.js","names":["methodsThatRequireUserAction: string[]","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","viemGetAddress","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","destroy: NonNullable<\n WalletConnectEvmWalletProvider['destroy']\n >","getDefaultClient","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getCore,\n getWalletProviderRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { SessionClosedUnexpectedlyError } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n createWalletConnectSessionEventEmitter,\n getSignClient,\n splitCaip10Token,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport type { EIP1193ProviderRequest } from '../../EvmWalletProvider.types';\nimport { evmConfirmTransaction } from '../../utils/evmConfirmTransaction';\nimport { evmExecuteSwapTransaction } from '../../utils/evmExecuteSwapTransaction';\nimport { evmTransferAmount } from '../../utils/evmTransferAmount';\nimport type { evmMethods } from '../consts';\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n sessionTopic: string;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction: string[] = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n] satisfies (typeof evmMethods)[number][];\n\n/** @notInstrumented */\nexport const createWalletProviderFromEIP155Session = async (\n { sessionTopic }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const signClient = await getSignClient(client);\n\n const { logger } = getCore(client);\n\n const getSession = () => {\n const session = signClient.session.get(sessionTopic);\n\n if (!session) {\n // destroy never throws (it logs internally), but explicit .catch makes\n // the fire-and-forget intent obvious and silences static analyzers.\n destroy().catch(() => undefined);\n\n throw new SessionClosedUnexpectedlyError({\n sessionTopic,\n walletDisplayName: displayName,\n });\n }\n\n return session;\n };\n\n const displayName = getSession().peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: sessionTopic,\n walletProviderType,\n });\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () => {\n // Assert the session is still valid\n getSession();\n\n return await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n };\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n // Assert the session is still valid\n getSession();\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const request: WalletConnectEvmWalletProvider['request'] = async <\n T = unknown\n >(\n args: EIP1193ProviderRequest\n ): Promise<T> => {\n const { networkId } = await getActiveNetworkId();\n\n const session = getSession();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n try {\n const result = await signClient.request<T>({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: sessionTopic,\n });\n\n return result;\n } catch (err) {\n logger.debug(\n '[createWalletProviderFromEIP155Session] Error requesting from signClient',\n { error: err, method: args.method, networkId }\n );\n\n // WC sessions don't always advertise eth_chainId in their namespaces.methods,\n // so the wallet may reject it. Fall back to the locally known networkId.\n if (args.method === 'eth_chainId') {\n return `0x${Number(networkId).toString(16)}` as never;\n }\n throw err;\n }\n };\n\n /**\n * We actually clear up the entire WC session and its wallet provider\n */\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => destroy();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n getSession().namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletConnectSessionEventEmitter({\n formatAddress: viemGetAddress,\n getSession,\n namespaceKey,\n sessionTopic,\n signClient,\n });\n\n const destroy: NonNullable<\n WalletConnectEvmWalletProvider['destroy']\n > = async () => {\n cleanupEventEmitter();\n try {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: sessionTopic,\n });\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n walletProviderRegistry.unregister(key);\n } catch (err) {\n getCore(client).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n return {\n chain: 'EVM',\n confirmTransaction: (args) => evmConfirmTransaction(args, client),\n destroy,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n executeSwapTransaction: (args) => evmExecuteSwapTransaction(args, client),\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n getSession,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: getSession().peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n signMessage,\n switchActiveNetwork,\n transferAmount: (args) => evmTransferAmount(args, client),\n walletProviderType,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n WalletProviderPriority,\n getWalletProviderRegistry,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport { getSignClient } from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/** @notInstrumented */\nexport const recoverEvmWalletConnectWalletProviders = async (\n client: DynamicClient\n) => {\n await waitForProjectSettings(client);\n\n const signClient = await getSignClient(client);\n\n /**\n * Recreate the wallet providers for all existing EVM sessions\n */\n const sessions = signClient.session.getAll();\n\n const currentTime = Math.floor(Date.now() / 1000);\n\n for (const session of sessions) {\n if (!('eip155' in session.namespaces)) {\n continue;\n }\n\n if (session.expiry <= currentTime) {\n continue;\n }\n\n const walletProvider = await createWalletProviderFromEIP155Session(\n {\n sessionTopic: session.topic,\n },\n client\n );\n\n getWalletProviderRegistry(client).register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n }\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport { registerExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { recoverEvmWalletConnectWalletProviders } from '../recoverEvmWalletConnectWalletProviders';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\n/** @notInstrumented */\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n) => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n await recoverEvmWalletConnectWalletProviders(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n] as const;\n","import {\n assertDefined,\n assertNonEmptyArray,\n createSignInMessageStatement,\n getAppMetadata,\n getCore,\n getDefaultClient,\n getNonce,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { getEvmNetworksData } from '../../utils/getEvmNetworksData';\nimport { evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n * @notInstrumented\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n\n const { appUniversalLink } = getAppMetadata(client);\n\n assertDefined(appUniversalLink, 'Universal link is not set');\n\n const url = new URL(appUniversalLink);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available. Read through\n * getNetworksData (via the EVM helper) rather than raw project settings so\n * client-side network transformers apply to the chains advertised in the\n * WalletConnect session.\n */\n const evmNetworks = getEvmNetworksData(client).sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertNonEmptyArray(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const nonce = await getNonce(client);\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods as unknown as string[],\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse(\n {\n authResponse,\n chain: 'EVM',\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n )\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n assertNonEmptyArray,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { getEvmNetworksData } from '../../utils/getEvmNetworksData';\nimport { evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\n/** @notInstrumented */\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n // Read through getNetworksData (via the EVM helper) rather than raw project\n // settings so client-side network transformers apply to the chains\n // advertised in the WalletConnect session.\n const evmNetworks = getEvmNetworksData(client);\n\n assertNonEmptyArray(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods as unknown as string[],\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n {\n addToDynamicWalletAccounts,\n sessionTopic: session.topic,\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\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 { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"walletConnect.esm.js","names":["methodsThatRequireUserAction: string[]","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","viemGetAddress","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","destroy: NonNullable<\n WalletConnectEvmWalletProvider['destroy']\n >","getDefaultClient","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getCore,\n getWalletProviderRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { SessionClosedUnexpectedlyError } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n createWalletConnectSessionEventEmitter,\n getSignClient,\n splitCaip10Token,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport type { EIP1193ProviderRequest } from '../../EvmWalletProvider.types';\nimport { evmConfirmTransaction } from '../../utils/evmConfirmTransaction';\nimport { evmExecuteSwapTransaction } from '../../utils/evmExecuteSwapTransaction';\nimport { evmExecuteYieldTransaction } from '../../utils/evmExecuteYieldTransaction';\nimport { evmTransferAmount } from '../../utils/evmTransferAmount';\nimport type { evmMethods } from '../consts';\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n sessionTopic: string;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction: string[] = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n] satisfies (typeof evmMethods)[number][];\n\n/** @notInstrumented */\nexport const createWalletProviderFromEIP155Session = async (\n { sessionTopic }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const signClient = await getSignClient(client);\n\n const { logger } = getCore(client);\n\n const getSession = () => {\n const session = signClient.session.get(sessionTopic);\n\n if (!session) {\n // destroy never throws (it logs internally), but explicit .catch makes\n // the fire-and-forget intent obvious and silences static analyzers.\n destroy().catch(() => undefined);\n\n throw new SessionClosedUnexpectedlyError({\n sessionTopic,\n walletDisplayName: displayName,\n });\n }\n\n return session;\n };\n\n const displayName = getSession().peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: sessionTopic,\n walletProviderType,\n });\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () => {\n // Assert the session is still valid\n getSession();\n\n return await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n };\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n // Assert the session is still valid\n getSession();\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const request: WalletConnectEvmWalletProvider['request'] = async <\n T = unknown\n >(\n args: EIP1193ProviderRequest\n ): Promise<T> => {\n const { networkId } = await getActiveNetworkId();\n\n const session = getSession();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n try {\n const result = await signClient.request<T>({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: sessionTopic,\n });\n\n return result;\n } catch (err) {\n logger.debug(\n '[createWalletProviderFromEIP155Session] Error requesting from signClient',\n { error: err, method: args.method, networkId }\n );\n\n // WC sessions don't always advertise eth_chainId in their namespaces.methods,\n // so the wallet may reject it. Fall back to the locally known networkId.\n if (args.method === 'eth_chainId') {\n return `0x${Number(networkId).toString(16)}` as never;\n }\n throw err;\n }\n };\n\n /**\n * We actually clear up the entire WC session and its wallet provider\n */\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => destroy();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n getSession().namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletConnectSessionEventEmitter({\n formatAddress: viemGetAddress,\n getSession,\n namespaceKey,\n sessionTopic,\n signClient,\n });\n\n const destroy: NonNullable<\n WalletConnectEvmWalletProvider['destroy']\n > = async () => {\n cleanupEventEmitter();\n try {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: sessionTopic,\n });\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n walletProviderRegistry.unregister(key);\n } catch (err) {\n getCore(client).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n return {\n chain: 'EVM',\n confirmTransaction: (args) => evmConfirmTransaction(args, client),\n destroy,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n executeSwapTransaction: (args) => evmExecuteSwapTransaction(args, client),\n executeYieldTransaction: (args) =>\n evmExecuteYieldTransaction(args, client),\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n getSession,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: getSession().peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n signMessage,\n switchActiveNetwork,\n transferAmount: (args) => evmTransferAmount(args, client),\n walletProviderType,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n WalletProviderPriority,\n getWalletProviderRegistry,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport { getSignClient } from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/** @notInstrumented */\nexport const recoverEvmWalletConnectWalletProviders = async (\n client: DynamicClient\n): Promise<void> => {\n await waitForProjectSettings(client);\n\n const signClient = await getSignClient(client);\n\n /**\n * Recreate the wallet providers for all existing EVM sessions\n */\n const sessions = signClient.session.getAll();\n\n const currentTime = Math.floor(Date.now() / 1000);\n\n for (const session of sessions) {\n if (!('eip155' in session.namespaces)) {\n continue;\n }\n\n if (session.expiry <= currentTime) {\n continue;\n }\n\n const walletProvider = await createWalletProviderFromEIP155Session(\n {\n sessionTopic: session.topic,\n },\n client\n );\n\n getWalletProviderRegistry(client).register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n }\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport { registerExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { recoverEvmWalletConnectWalletProviders } from '../recoverEvmWalletConnectWalletProviders';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\n/** @notInstrumented */\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n): Promise<void> => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n await recoverEvmWalletConnectWalletProviders(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n] as const;\n","import {\n assertDefined,\n assertNonEmptyArray,\n createSignInMessageStatement,\n getAppMetadata,\n getCore,\n getDefaultClient,\n getNonce,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { getEvmNetworksData } from '../../utils/getEvmNetworksData';\nimport { evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n * @notInstrumented\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n\n const { appUniversalLink } = getAppMetadata(client);\n\n assertDefined(appUniversalLink, 'Universal link is not set');\n\n const url = new URL(appUniversalLink);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available. Read through\n * getNetworksData (via the EVM helper) rather than raw project settings so\n * client-side network transformers apply to the chains advertised in the\n * WalletConnect session.\n */\n const evmNetworks = getEvmNetworksData(client).sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertNonEmptyArray(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const nonce = await getNonce(client);\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods as unknown as string[],\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse(\n {\n authResponse,\n chain: 'EVM',\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n )\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n assertNonEmptyArray,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { getEvmNetworksData } from '../../utils/getEvmNetworksData';\nimport { evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\n/** @notInstrumented */\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n // Read through getNetworksData (via the EVM helper) rather than raw project\n // settings so client-side network transformers apply to the chains\n // advertised in the WalletConnect session.\n const evmNetworks = getEvmNetworksData(client);\n\n assertNonEmptyArray(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods as unknown as string[],\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n {\n addToDynamicWalletAccounts,\n sessionTopic: session.topic,\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\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\n// TODO: on the v2 major release, move @dynamic-labs-sdk/wallet-connect and the\n// @walletconnect/* dependencies of this package to optional peer dependencies,\n// so apps that never connect external wallets don't install them at all.\n// The same applies to @dynamic-labs-sdk/solana.\nexport { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as version, t as name } from "./package-
|
|
2
|
-
import {
|
|
1
|
+
import { n as version, t as name } from "./package-B7usQR9C.native.esm.js";
|
|
2
|
+
import { a as evmConfirmTransaction, n as evmExecuteYieldTransaction, r as evmExecuteSwapTransaction, s as registerEvmNetworkProviderBuilder, t as evmTransferAmount } from "./evmTransferAmount-BftkuI-H.native.esm.js";
|
|
3
3
|
import "./createPublicClientFromNetworkData-9g8Hsu4A.native.esm.js";
|
|
4
4
|
import { t as getEvmNetworksData } from "./getEvmNetworksData-CGZjI4hV.native.esm.js";
|
|
5
5
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
@@ -130,6 +130,7 @@ const createWalletProviderFromEIP155Session = async ({ sessionTopic }, client) =
|
|
|
130
130
|
return getEventEmitter();
|
|
131
131
|
},
|
|
132
132
|
executeSwapTransaction: (args) => evmExecuteSwapTransaction(args, client),
|
|
133
|
+
executeYieldTransaction: (args) => evmExecuteYieldTransaction(args, client),
|
|
133
134
|
formatWalletAddress,
|
|
134
135
|
getActiveNetworkId,
|
|
135
136
|
getConnectedAddresses,
|