@dynamic-labs/aptos 4.38.0 → 4.40.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.
Files changed (53) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/_virtual/_tslib.cjs +36 -0
  3. package/_virtual/_tslib.js +32 -0
  4. package/package.cjs +1 -1
  5. package/package.js +1 -1
  6. package/package.json +7 -3
  7. package/src/connectors/AptosWalletConnector/AptosWalletConnector.cjs +208 -0
  8. package/src/connectors/AptosWalletConnector/AptosWalletConnector.d.ts +71 -0
  9. package/src/connectors/AptosWalletConnector/AptosWalletConnector.js +204 -0
  10. package/src/connectors/AptosWalletConnector/index.d.ts +1 -0
  11. package/src/consts/index.cjs +19 -0
  12. package/src/consts/index.js +15 -0
  13. package/src/index.cjs +27 -6
  14. package/src/index.d.ts +10 -1
  15. package/src/index.js +19 -6
  16. package/src/injected/AptosProviderHelper.cjs +317 -0
  17. package/src/injected/AptosProviderHelper.d.ts +106 -0
  18. package/src/injected/AptosProviderHelper.js +313 -0
  19. package/src/injected/InjectedWalletBase.cjs +87 -0
  20. package/src/injected/InjectedWalletBase.d.ts +28 -0
  21. package/src/injected/InjectedWalletBase.js +83 -0
  22. package/src/injected/fetchInjectedWalletConnectors.cjs +171 -0
  23. package/src/injected/fetchInjectedWalletConnectors.d.ts +48 -0
  24. package/src/injected/fetchInjectedWalletConnectors.js +167 -0
  25. package/src/injected/index.d.ts +3 -0
  26. package/src/types.d.ts +33 -113
  27. package/src/utils/assertProvider/assertProvider.cjs +36 -0
  28. package/src/utils/assertProvider/assertProvider.d.ts +6 -5
  29. package/src/utils/assertProvider/assertProvider.js +32 -0
  30. package/src/utils/getWalletStandardWallets/getWalletStandardWallets.cjs +68 -0
  31. package/src/utils/getWalletStandardWallets/getWalletStandardWallets.js +64 -0
  32. package/src/utils/invokeWalletMethod/invokeWalletMethod.cjs +61 -0
  33. package/src/utils/invokeWalletMethod/invokeWalletMethod.d.ts +6 -7
  34. package/src/utils/invokeWalletMethod/invokeWalletMethod.js +57 -0
  35. package/src/utils/isWalletWithRequiredFeatureSet/isWalletWithRequiredFeatureSet.cjs +10 -0
  36. package/src/utils/isWalletWithRequiredFeatureSet/isWalletWithRequiredFeatureSet.js +6 -0
  37. package/src/utils/parseConnectionResult/parseConnectionResult.cjs +40 -0
  38. package/src/utils/parseConnectionResult/parseConnectionResult.d.ts +7 -10
  39. package/src/utils/parseConnectionResult/parseConnectionResult.js +36 -0
  40. package/src/utils/parseTransactionResponse/parseTransactionResponse.cjs +53 -0
  41. package/src/utils/parseTransactionResponse/parseTransactionResponse.d.ts +3 -3
  42. package/src/utils/parseTransactionResponse/parseTransactionResponse.js +49 -0
  43. package/src/wallet/AptosWallet.cjs +138 -0
  44. package/src/wallet/AptosWallet.d.ts +76 -0
  45. package/src/wallet/AptosWallet.js +134 -0
  46. package/src/wallet/index.d.ts +1 -0
  47. package/src/walletStandard/createAptosSignerFromWalletStandard.cjs +244 -0
  48. package/src/walletStandard/createAptosSignerFromWalletStandard.d.ts +9 -0
  49. package/src/walletStandard/createAptosSignerFromWalletStandard.js +240 -0
  50. package/src/walletStandard/getConnectorConstructorForWalletStandardWallet.cjs +31 -0
  51. package/src/walletStandard/getConnectorConstructorForWalletStandardWallet.d.ts +3 -0
  52. package/src/walletStandard/getConnectorConstructorForWalletStandardWallet.js +27 -0
  53. package/src/connectors/index.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,4 +1,25 @@
1
1
 
2
+ ## [4.40.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.39.0...v4.40.0) (2025-10-22)
3
+
4
+
5
+ ### Features
6
+
7
+ * add Wallet Connect Solana as a wallet option ([#9719](https://github.com/dynamic-labs/dynamic-auth/issues/9719)) ([ece5f6b](https://github.com/dynamic-labs/dynamic-auth/commit/ece5f6b36c1fbefdf05cf8203fe0fee0b2e8ed3d))
8
+ * make updates to crypto.com onramp flow ([#9746](https://github.com/dynamic-labs/dynamic-auth/issues/9746)) ([22040d2](https://github.com/dynamic-labs/dynamic-auth/commit/22040d28d0d66b84f5c3be9bed4cfce7f1978944))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * return undefined if json payload is undefined in parse token ([#9750](https://github.com/dynamic-labs/dynamic-auth/issues/9750)) ([5751198](https://github.com/dynamic-labs/dynamic-auth/commit/575119867c93f89062e96e30c02b128161fb9675))
14
+
15
+ ## [4.39.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.38.0...v4.39.0) (2025-10-17)
16
+
17
+
18
+ ### Features
19
+
20
+ * add crypto.com as an onramp option in deposit ([#9580](https://github.com/dynamic-labs/dynamic-auth/issues/9580)) ([4988acc](https://github.com/dynamic-labs/dynamic-auth/commit/4988accfeafa5556297ad6e9873073e30c504c7f)), closes [#3](https://github.com/dynamic-labs/dynamic-auth/issues/3)
21
+ * add sui non-native token sending thru dynamic widget ([#9715](https://github.com/dynamic-labs/dynamic-auth/issues/9715)) ([9d9ea3b](https://github.com/dynamic-labs/dynamic-auth/commit/9d9ea3b233706766516b89d725a52d63cceb01f6))
22
+
2
23
  ## [4.38.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.37.2...v4.38.0) (2025-10-14)
3
24
 
4
25
 
@@ -0,0 +1,36 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ /******************************************************************************
7
+ Copyright (c) Microsoft Corporation.
8
+
9
+ Permission to use, copy, modify, and/or distribute this software for any
10
+ purpose with or without fee is hereby granted.
11
+
12
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
13
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
14
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
15
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
16
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
17
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
18
+ PERFORMANCE OF THIS SOFTWARE.
19
+ ***************************************************************************** */
20
+
21
+ function __awaiter(thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ }
30
+
31
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
32
+ var e = new Error(message);
33
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
34
+ };
35
+
36
+ exports.__awaiter = __awaiter;
@@ -0,0 +1,32 @@
1
+ 'use client'
2
+ /******************************************************************************
3
+ Copyright (c) Microsoft Corporation.
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
11
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
+ PERFORMANCE OF THIS SOFTWARE.
15
+ ***************************************************************************** */
16
+
17
+ function __awaiter(thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ }
26
+
27
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
28
+ var e = new Error(message);
29
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
30
+ };
31
+
32
+ export { __awaiter };
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.38.0";
6
+ var version = "4.40.0";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.38.0";
2
+ var version = "4.40.0";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/aptos",
3
- "version": "4.38.0",
3
+ "version": "4.40.0",
4
4
  "description": "A React SDK for implementing wallet web3 authentication and authorization to your website.",
5
5
  "author": "Dynamic Labs, Inc.",
6
6
  "license": "MIT",
@@ -20,9 +20,13 @@
20
20
  "dependencies": {
21
21
  "@aptos-labs/ts-sdk": "5.1.1",
22
22
  "@aptos-labs/wallet-standard": "0.5.2",
23
- "@dynamic-labs/assert-package-version": "4.38.0",
23
+ "@dynamic-labs/assert-package-version": "4.40.0",
24
24
  "@wallet-standard/core": "1.1.1",
25
- "@dynamic-labs/utils": "4.38.0"
25
+ "@wallet-standard/features": "1.0.3",
26
+ "@dynamic-labs/logger": "4.40.0",
27
+ "@dynamic-labs/utils": "4.40.0",
28
+ "@dynamic-labs/wallet-book": "4.40.0",
29
+ "@dynamic-labs/wallet-connector-core": "4.40.0"
26
30
  },
27
31
  "peerDependencies": {}
28
32
  }
@@ -0,0 +1,208 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../_virtual/_tslib.cjs');
7
+ var tsSdk = require('@aptos-labs/ts-sdk');
8
+ var logger = require('@dynamic-labs/logger');
9
+ var utils = require('@dynamic-labs/utils');
10
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
11
+ var assertProvider = require('../../utils/assertProvider/assertProvider.cjs');
12
+ var invokeWalletMethod = require('../../utils/invokeWalletMethod/invokeWalletMethod.cjs');
13
+ var parseConnectionResult = require('../../utils/parseConnectionResult/parseConnectionResult.cjs');
14
+ var parseTransactionResponse = require('../../utils/parseTransactionResponse/parseTransactionResponse.cjs');
15
+ var AptosWallet = require('../../wallet/AptosWallet.cjs');
16
+
17
+ /**
18
+ * Abstract base class for all Aptos wallet connectors.
19
+ *
20
+ * This class provides the common functionality needed by all AIP-62 compliant
21
+ * Aptos wallet implementations. It handles connection management, network switching,
22
+ * and transaction operations using the wallet-standard exclusively.
23
+ */
24
+ class AptosWalletConnector extends walletConnectorCore.WalletConnectorBase {
25
+ constructor(name, opts) {
26
+ super({ metadata: opts.metadata, walletBook: opts.walletBook });
27
+ this.name = 'Aptos';
28
+ this.ChainWallet = AptosWallet.AptosWallet;
29
+ this.connectedChain = 'APTOS';
30
+ this.supportedChains = ['APTOS'];
31
+ this.switchNetworkOnlyFromWallet = true;
32
+ /** Connection state */
33
+ this.isConnecting = false;
34
+ this.name = name;
35
+ this.logger = new logger.Logger(this.name);
36
+ }
37
+ /**
38
+ * Connects to the Aptos wallet.
39
+ */
40
+ connect() {
41
+ return _tslib.__awaiter(this, arguments, void 0, function* ({ silent } = {}) {
42
+ if (this.account || this.isConnecting)
43
+ return;
44
+ this.isConnecting = true;
45
+ this.logger.debug('[connect] Attempting to connect');
46
+ try {
47
+ const provider = this.getProvider();
48
+ assertProvider.assertProvider(provider);
49
+ const result = yield invokeWalletMethod.invokeWalletMethod(provider, 'aptos:connect', 'connect');
50
+ this.account = parseConnectionResult.parseConnectionResult(result);
51
+ this.logger.debug('[connect] Connected successfully');
52
+ }
53
+ catch (error) {
54
+ this.logger.error('[connect] Connection failed:', error);
55
+ if (!silent) {
56
+ throw new utils.DynamicError('Failed to connect to Aptos wallet');
57
+ }
58
+ }
59
+ finally {
60
+ this.isConnecting = false;
61
+ }
62
+ });
63
+ }
64
+ /**
65
+ * Disconnects from the wallet.
66
+ */
67
+ disconnect() {
68
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
69
+ this.logger.debug('[disconnect] Disconnecting');
70
+ const provider = this.getProvider();
71
+ if (!provider)
72
+ return;
73
+ try {
74
+ yield invokeWalletMethod.invokeWalletMethod(provider, 'aptos:disconnect', 'disconnect');
75
+ }
76
+ catch (error) {
77
+ // Some wallets may not support disconnect - that's okay
78
+ this.logger.debug('[disconnect] Disconnect not supported or failed:', error);
79
+ }
80
+ this.account = undefined;
81
+ });
82
+ }
83
+ /**
84
+ * Gets the current account information.
85
+ */
86
+ getAccountInfo() {
87
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
88
+ return this.account;
89
+ });
90
+ }
91
+ /**
92
+ * Signs a transaction.
93
+ */
94
+ signTransaction(transaction, asFeePayer) {
95
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
96
+ const provider = this.getProvider();
97
+ assertProvider.assertProvider(provider);
98
+ return invokeWalletMethod.invokeWalletMethod(provider, 'aptos:signTransaction', 'signTransaction', transaction, asFeePayer);
99
+ });
100
+ }
101
+ /**
102
+ * Signs an Aptos message.
103
+ */
104
+ signAptosMessage(input) {
105
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
106
+ const provider = this.getProvider();
107
+ assertProvider.assertProvider(provider);
108
+ return invokeWalletMethod.invokeWalletMethod(provider, 'aptos:signMessage', 'signMessage', input);
109
+ });
110
+ }
111
+ /**
112
+ * Signs and submits a transaction.
113
+ */
114
+ signAndSubmitTransaction(transaction) {
115
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
116
+ const provider = this.getProvider();
117
+ assertProvider.assertProvider(provider);
118
+ // Try direct signAndSubmit method first
119
+ try {
120
+ const response = yield invokeWalletMethod.invokeWalletMethod(provider, 'aptos:signAndSubmitTransaction', 'signAndSubmitTransaction', transaction);
121
+ return parseTransactionResponse.parseTransactionResponse(response);
122
+ }
123
+ catch (error) {
124
+ // If signAndSubmit not available, fall back to sign + submit
125
+ }
126
+ // Fallback: sign then submit separately
127
+ const signedTx = yield this.signTransaction(transaction);
128
+ const authenticator = 'args' in signedTx ? signedTx.args : signedTx;
129
+ return this.submitTransaction(authenticator);
130
+ });
131
+ }
132
+ /**
133
+ * Submits a signed transaction.
134
+ */
135
+ submitTransaction(signedTransaction) {
136
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
137
+ const provider = this.getProvider();
138
+ assertProvider.assertProvider(provider);
139
+ return invokeWalletMethod.invokeWalletMethod(provider, 'aptos:submitTransaction', 'submitTransaction', signedTransaction);
140
+ });
141
+ }
142
+ /**
143
+ * Gets the current network information.
144
+ */
145
+ getNetworkInfo() {
146
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
147
+ const provider = this.getProvider();
148
+ assertProvider.assertProvider(provider);
149
+ try {
150
+ // Try the network method first
151
+ return yield invokeWalletMethod.invokeWalletMethod(provider, 'aptos:network', 'network');
152
+ }
153
+ catch (error) {
154
+ // Fallback to getNetwork method
155
+ try {
156
+ return yield invokeWalletMethod.invokeWalletMethod(provider, 'aptos:getNetwork', 'getNetwork');
157
+ }
158
+ catch (error2) {
159
+ this.logger.debug('[getNetworkInfo] Network info not available:', error2);
160
+ return undefined;
161
+ }
162
+ }
163
+ });
164
+ }
165
+ /**
166
+ * Gets the Aptos client instance configured for the current network.
167
+ */
168
+ getAptosClient() {
169
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
170
+ var _a;
171
+ try {
172
+ // Get current network from wallet
173
+ const networkInfo = yield this.getNetworkInfo();
174
+ let network = tsSdk.Network.MAINNET; // Default fallback
175
+ if (networkInfo) {
176
+ // Map network info to Aptos SDK network
177
+ switch ((_a = networkInfo.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) {
178
+ case 'mainnet':
179
+ network = tsSdk.Network.MAINNET;
180
+ break;
181
+ case 'testnet':
182
+ network = tsSdk.Network.TESTNET;
183
+ break;
184
+ case 'devnet':
185
+ network = tsSdk.Network.DEVNET;
186
+ break;
187
+ default:
188
+ // If we have a custom URL, use it
189
+ if (networkInfo.url) {
190
+ const config = new tsSdk.AptosConfig({ fullnode: networkInfo.url });
191
+ return new tsSdk.Aptos(config);
192
+ }
193
+ }
194
+ }
195
+ const config = new tsSdk.AptosConfig({ network });
196
+ return new tsSdk.Aptos(config);
197
+ }
198
+ catch (error) {
199
+ // If network detection fails, fallback to mainnet
200
+ this.logger.debug('[getAptosClient] Network detection failed, using mainnet:', error);
201
+ const config = new tsSdk.AptosConfig({ network: tsSdk.Network.MAINNET });
202
+ return new tsSdk.Aptos(config);
203
+ }
204
+ });
205
+ }
206
+ }
207
+
208
+ exports.AptosWalletConnector = AptosWalletConnector;
@@ -0,0 +1,71 @@
1
+ import type { AccountAuthenticator, AnyRawTransaction } from '@aptos-labs/ts-sdk';
2
+ import { Aptos } from '@aptos-labs/ts-sdk';
3
+ import type { AccountInfo, AptosSignMessageInput, AptosSignMessageOutput, NetworkInfo, UserResponse } from '@aptos-labs/wallet-standard';
4
+ import { Logger } from '@dynamic-labs/logger';
5
+ import { type Chain, WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
6
+ import type { AptosWalletConnectorProps, IAptosProvider } from '../../types';
7
+ import { AptosWallet } from '../../wallet/AptosWallet';
8
+ /**
9
+ * Abstract base class for all Aptos wallet connectors.
10
+ *
11
+ * This class provides the common functionality needed by all AIP-62 compliant
12
+ * Aptos wallet implementations. It handles connection management, network switching,
13
+ * and transaction operations using the wallet-standard exclusively.
14
+ */
15
+ export declare abstract class AptosWalletConnector extends WalletConnectorBase<typeof AptosWallet> {
16
+ name: string;
17
+ ChainWallet: typeof AptosWallet;
18
+ connectedChain: Chain;
19
+ supportedChains: Chain[];
20
+ switchNetworkOnlyFromWallet: boolean;
21
+ /** Current account information */
22
+ protected account: AccountInfo | undefined;
23
+ /** Logger instance */
24
+ logger: Logger;
25
+ /** Connection state */
26
+ protected isConnecting: boolean;
27
+ constructor(name: string, opts: AptosWalletConnectorProps);
28
+ /**
29
+ * Abstract method to get the wallet provider.
30
+ * Must be implemented by concrete connector classes.
31
+ */
32
+ abstract getProvider(): IAptosProvider | undefined;
33
+ /**
34
+ * Connects to the Aptos wallet.
35
+ */
36
+ connect({ silent }?: {
37
+ silent?: boolean;
38
+ }): Promise<void>;
39
+ /**
40
+ * Disconnects from the wallet.
41
+ */
42
+ disconnect(): Promise<void>;
43
+ /**
44
+ * Gets the current account information.
45
+ */
46
+ getAccountInfo(): Promise<AccountInfo | undefined>;
47
+ /**
48
+ * Signs a transaction.
49
+ */
50
+ signTransaction(transaction: AnyRawTransaction, asFeePayer?: boolean): Promise<UserResponse<AccountAuthenticator> | AccountAuthenticator>;
51
+ /**
52
+ * Signs an Aptos message.
53
+ */
54
+ signAptosMessage(input: AptosSignMessageInput): Promise<UserResponse<AptosSignMessageOutput> | AptosSignMessageOutput>;
55
+ /**
56
+ * Signs and submits a transaction.
57
+ */
58
+ signAndSubmitTransaction(transaction: AnyRawTransaction): Promise<string>;
59
+ /**
60
+ * Submits a signed transaction.
61
+ */
62
+ submitTransaction(signedTransaction: AccountAuthenticator): Promise<string>;
63
+ /**
64
+ * Gets the current network information.
65
+ */
66
+ getNetworkInfo(): Promise<NetworkInfo | undefined>;
67
+ /**
68
+ * Gets the Aptos client instance configured for the current network.
69
+ */
70
+ getAptosClient(): Promise<Aptos | undefined>;
71
+ }
@@ -0,0 +1,204 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../_virtual/_tslib.js';
3
+ import { Network, AptosConfig, Aptos } from '@aptos-labs/ts-sdk';
4
+ import { Logger } from '@dynamic-labs/logger';
5
+ import { DynamicError } from '@dynamic-labs/utils';
6
+ import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
7
+ import { assertProvider } from '../../utils/assertProvider/assertProvider.js';
8
+ import { invokeWalletMethod } from '../../utils/invokeWalletMethod/invokeWalletMethod.js';
9
+ import { parseConnectionResult } from '../../utils/parseConnectionResult/parseConnectionResult.js';
10
+ import { parseTransactionResponse } from '../../utils/parseTransactionResponse/parseTransactionResponse.js';
11
+ import { AptosWallet } from '../../wallet/AptosWallet.js';
12
+
13
+ /**
14
+ * Abstract base class for all Aptos wallet connectors.
15
+ *
16
+ * This class provides the common functionality needed by all AIP-62 compliant
17
+ * Aptos wallet implementations. It handles connection management, network switching,
18
+ * and transaction operations using the wallet-standard exclusively.
19
+ */
20
+ class AptosWalletConnector extends WalletConnectorBase {
21
+ constructor(name, opts) {
22
+ super({ metadata: opts.metadata, walletBook: opts.walletBook });
23
+ this.name = 'Aptos';
24
+ this.ChainWallet = AptosWallet;
25
+ this.connectedChain = 'APTOS';
26
+ this.supportedChains = ['APTOS'];
27
+ this.switchNetworkOnlyFromWallet = true;
28
+ /** Connection state */
29
+ this.isConnecting = false;
30
+ this.name = name;
31
+ this.logger = new Logger(this.name);
32
+ }
33
+ /**
34
+ * Connects to the Aptos wallet.
35
+ */
36
+ connect() {
37
+ return __awaiter(this, arguments, void 0, function* ({ silent } = {}) {
38
+ if (this.account || this.isConnecting)
39
+ return;
40
+ this.isConnecting = true;
41
+ this.logger.debug('[connect] Attempting to connect');
42
+ try {
43
+ const provider = this.getProvider();
44
+ assertProvider(provider);
45
+ const result = yield invokeWalletMethod(provider, 'aptos:connect', 'connect');
46
+ this.account = parseConnectionResult(result);
47
+ this.logger.debug('[connect] Connected successfully');
48
+ }
49
+ catch (error) {
50
+ this.logger.error('[connect] Connection failed:', error);
51
+ if (!silent) {
52
+ throw new DynamicError('Failed to connect to Aptos wallet');
53
+ }
54
+ }
55
+ finally {
56
+ this.isConnecting = false;
57
+ }
58
+ });
59
+ }
60
+ /**
61
+ * Disconnects from the wallet.
62
+ */
63
+ disconnect() {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ this.logger.debug('[disconnect] Disconnecting');
66
+ const provider = this.getProvider();
67
+ if (!provider)
68
+ return;
69
+ try {
70
+ yield invokeWalletMethod(provider, 'aptos:disconnect', 'disconnect');
71
+ }
72
+ catch (error) {
73
+ // Some wallets may not support disconnect - that's okay
74
+ this.logger.debug('[disconnect] Disconnect not supported or failed:', error);
75
+ }
76
+ this.account = undefined;
77
+ });
78
+ }
79
+ /**
80
+ * Gets the current account information.
81
+ */
82
+ getAccountInfo() {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ return this.account;
85
+ });
86
+ }
87
+ /**
88
+ * Signs a transaction.
89
+ */
90
+ signTransaction(transaction, asFeePayer) {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ const provider = this.getProvider();
93
+ assertProvider(provider);
94
+ return invokeWalletMethod(provider, 'aptos:signTransaction', 'signTransaction', transaction, asFeePayer);
95
+ });
96
+ }
97
+ /**
98
+ * Signs an Aptos message.
99
+ */
100
+ signAptosMessage(input) {
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ const provider = this.getProvider();
103
+ assertProvider(provider);
104
+ return invokeWalletMethod(provider, 'aptos:signMessage', 'signMessage', input);
105
+ });
106
+ }
107
+ /**
108
+ * Signs and submits a transaction.
109
+ */
110
+ signAndSubmitTransaction(transaction) {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ const provider = this.getProvider();
113
+ assertProvider(provider);
114
+ // Try direct signAndSubmit method first
115
+ try {
116
+ const response = yield invokeWalletMethod(provider, 'aptos:signAndSubmitTransaction', 'signAndSubmitTransaction', transaction);
117
+ return parseTransactionResponse(response);
118
+ }
119
+ catch (error) {
120
+ // If signAndSubmit not available, fall back to sign + submit
121
+ }
122
+ // Fallback: sign then submit separately
123
+ const signedTx = yield this.signTransaction(transaction);
124
+ const authenticator = 'args' in signedTx ? signedTx.args : signedTx;
125
+ return this.submitTransaction(authenticator);
126
+ });
127
+ }
128
+ /**
129
+ * Submits a signed transaction.
130
+ */
131
+ submitTransaction(signedTransaction) {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ const provider = this.getProvider();
134
+ assertProvider(provider);
135
+ return invokeWalletMethod(provider, 'aptos:submitTransaction', 'submitTransaction', signedTransaction);
136
+ });
137
+ }
138
+ /**
139
+ * Gets the current network information.
140
+ */
141
+ getNetworkInfo() {
142
+ return __awaiter(this, void 0, void 0, function* () {
143
+ const provider = this.getProvider();
144
+ assertProvider(provider);
145
+ try {
146
+ // Try the network method first
147
+ return yield invokeWalletMethod(provider, 'aptos:network', 'network');
148
+ }
149
+ catch (error) {
150
+ // Fallback to getNetwork method
151
+ try {
152
+ return yield invokeWalletMethod(provider, 'aptos:getNetwork', 'getNetwork');
153
+ }
154
+ catch (error2) {
155
+ this.logger.debug('[getNetworkInfo] Network info not available:', error2);
156
+ return undefined;
157
+ }
158
+ }
159
+ });
160
+ }
161
+ /**
162
+ * Gets the Aptos client instance configured for the current network.
163
+ */
164
+ getAptosClient() {
165
+ return __awaiter(this, void 0, void 0, function* () {
166
+ var _a;
167
+ try {
168
+ // Get current network from wallet
169
+ const networkInfo = yield this.getNetworkInfo();
170
+ let network = Network.MAINNET; // Default fallback
171
+ if (networkInfo) {
172
+ // Map network info to Aptos SDK network
173
+ switch ((_a = networkInfo.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) {
174
+ case 'mainnet':
175
+ network = Network.MAINNET;
176
+ break;
177
+ case 'testnet':
178
+ network = Network.TESTNET;
179
+ break;
180
+ case 'devnet':
181
+ network = Network.DEVNET;
182
+ break;
183
+ default:
184
+ // If we have a custom URL, use it
185
+ if (networkInfo.url) {
186
+ const config = new AptosConfig({ fullnode: networkInfo.url });
187
+ return new Aptos(config);
188
+ }
189
+ }
190
+ }
191
+ const config = new AptosConfig({ network });
192
+ return new Aptos(config);
193
+ }
194
+ catch (error) {
195
+ // If network detection fails, fallback to mainnet
196
+ this.logger.debug('[getAptosClient] Network detection failed, using mainnet:', error);
197
+ const config = new AptosConfig({ network: Network.MAINNET });
198
+ return new Aptos(config);
199
+ }
200
+ });
201
+ }
202
+ }
203
+
204
+ export { AptosWalletConnector };
@@ -0,0 +1 @@
1
+ export { AptosWalletConnector } from './AptosWalletConnector';
@@ -0,0 +1,19 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ // These features are absolutely required for wallets to function in the Aptos ecosystem.
7
+ // Eventually, as wallets have more consistent support of features, we may want to extend this list.
8
+ const REQUIRED_FEATURES = [
9
+ 'aptos:account',
10
+ 'aptos:connect',
11
+ 'aptos:disconnect',
12
+ 'aptos:network',
13
+ 'aptos:onAccountChange',
14
+ 'aptos:onNetworkChange',
15
+ 'aptos:signMessage',
16
+ 'aptos:signTransaction',
17
+ ];
18
+
19
+ exports.REQUIRED_FEATURES = REQUIRED_FEATURES;
@@ -0,0 +1,15 @@
1
+ 'use client'
2
+ // These features are absolutely required for wallets to function in the Aptos ecosystem.
3
+ // Eventually, as wallets have more consistent support of features, we may want to extend this list.
4
+ const REQUIRED_FEATURES = [
5
+ 'aptos:account',
6
+ 'aptos:connect',
7
+ 'aptos:disconnect',
8
+ 'aptos:network',
9
+ 'aptos:onAccountChange',
10
+ 'aptos:onNetworkChange',
11
+ 'aptos:signMessage',
12
+ 'aptos:signTransaction',
13
+ ];
14
+
15
+ export { REQUIRED_FEATURES };