@provablehq/aleo-wallet-adaptor-core 0.1.1-alpha.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/index.js ADDED
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ BaseAleoWalletAdapter: () => BaseAleoWalletAdapter,
24
+ DecryptPermission: () => import_aleo_wallet_standard2.WalletDecryptPermission,
25
+ MethodNotImplementedError: () => MethodNotImplementedError,
26
+ WalletConnectionError: () => WalletConnectionError,
27
+ WalletDecryptionError: () => WalletDecryptionError,
28
+ WalletDecryptionNotAllowedError: () => WalletDecryptionNotAllowedError,
29
+ WalletDisconnectionError: () => WalletDisconnectionError,
30
+ WalletError: () => WalletError,
31
+ WalletFeatureNotAvailableError: () => WalletFeatureNotAvailableError,
32
+ WalletNotConnectedError: () => WalletNotConnectedError,
33
+ WalletNotReadyError: () => WalletNotReadyError,
34
+ WalletNotSelectedError: () => WalletNotSelectedError,
35
+ WalletSignMessageError: () => WalletSignMessageError,
36
+ WalletSwitchNetworkError: () => WalletSwitchNetworkError,
37
+ WalletTransactionError: () => WalletTransactionError,
38
+ WalletTransactionRejectedError: () => WalletTransactionRejectedError,
39
+ WalletTransactionTimeoutError: () => WalletTransactionTimeoutError,
40
+ createAccount: () => createAccount,
41
+ getShortAddress: () => getShortAddress
42
+ });
43
+ module.exports = __toCommonJS(index_exports);
44
+
45
+ // src/adapter.ts
46
+ var import_aleo_wallet_standard = require("@provablehq/aleo-wallet-standard");
47
+
48
+ // src/errors.ts
49
+ var WalletError = class extends Error {
50
+ constructor() {
51
+ super(...arguments);
52
+ this.name = "WalletError";
53
+ }
54
+ };
55
+ var WalletNotConnectedError = class extends WalletError {
56
+ constructor() {
57
+ super("Wallet not connected");
58
+ this.name = "WalletNotConnectedError";
59
+ }
60
+ };
61
+ var WalletConnectionError = class extends WalletError {
62
+ constructor(message = "Connection to wallet failed") {
63
+ super(message);
64
+ this.name = "WalletConnectionError";
65
+ }
66
+ };
67
+ var WalletFeatureNotAvailableError = class extends WalletError {
68
+ constructor(feature) {
69
+ super(`Wallet feature not available: ${feature}`);
70
+ this.name = "WalletFeatureNotAvailableError";
71
+ }
72
+ };
73
+ var WalletTransactionError = class extends WalletError {
74
+ constructor(message = "Transaction failed") {
75
+ super(message);
76
+ this.name = "WalletTransactionError";
77
+ }
78
+ };
79
+ var WalletTransactionRejectedError = class extends WalletTransactionError {
80
+ constructor() {
81
+ super("Transaction rejected by user");
82
+ this.name = "WalletTransactionRejectedError";
83
+ }
84
+ };
85
+ var WalletTransactionTimeoutError = class extends WalletTransactionError {
86
+ constructor() {
87
+ super("Transaction timed out");
88
+ this.name = "WalletTransactionTimeoutError";
89
+ }
90
+ };
91
+ var WalletNotSelectedError = class extends WalletError {
92
+ constructor() {
93
+ super("Wallet not selected");
94
+ this.name = "WalletNotSelectedError";
95
+ }
96
+ };
97
+ var WalletDisconnectionError = class extends WalletError {
98
+ constructor(message = "Disconnection failed") {
99
+ super(message);
100
+ this.name = "WalletDisconnectionError";
101
+ }
102
+ };
103
+ var WalletSignMessageError = class extends WalletError {
104
+ constructor(message = "Failed to sign message") {
105
+ super(message);
106
+ this.name = "WalletSignMessageError";
107
+ }
108
+ };
109
+ var WalletSwitchNetworkError = class extends WalletError {
110
+ constructor(message = "Failed to switch network") {
111
+ super(message);
112
+ this.name = "WalletSwitchNetworkError";
113
+ }
114
+ };
115
+ var WalletNotReadyError = class extends WalletError {
116
+ constructor() {
117
+ super("Wallet not ready");
118
+ this.name = "WalletNotReadyError";
119
+ }
120
+ };
121
+ var WalletDecryptionNotAllowedError = class extends WalletError {
122
+ constructor() {
123
+ super("Decryption not allowed");
124
+ this.name = "WalletDecryptionNotAllowedError";
125
+ }
126
+ };
127
+ var WalletDecryptionError = class extends WalletError {
128
+ constructor(message = "Failed to decrypt") {
129
+ super(message);
130
+ this.name = "WalletDecryptionError";
131
+ }
132
+ };
133
+ var MethodNotImplementedError = class extends WalletError {
134
+ constructor(method) {
135
+ super(`Method not implemented: ${method}`);
136
+ this.name = "MethodNotImplementedError";
137
+ }
138
+ };
139
+
140
+ // src/adapter.ts
141
+ var BaseAleoWalletAdapter = class extends import_aleo_wallet_standard.EventEmitter {
142
+ get readyState() {
143
+ return this._readyState;
144
+ }
145
+ set readyState(state) {
146
+ if (state !== this._readyState) {
147
+ this._readyState = state;
148
+ this.emit("readyStateChange", state);
149
+ }
150
+ }
151
+ /**
152
+ * The supported chains
153
+ */
154
+ get chains() {
155
+ return this._wallet?.features[import_aleo_wallet_standard.WalletFeatureName.CHAINS]?.chains || [];
156
+ }
157
+ /**
158
+ * The wallet's connected state
159
+ */
160
+ get connected() {
161
+ return !!this.account;
162
+ }
163
+ /**
164
+ * Connect to the wallet
165
+ * @param network The network to connect to
166
+ * @param decryptPermission The decrypt permission
167
+ * @param programs The programs to connect to
168
+ * @returns The connected account
169
+ */
170
+ async connect(network, decryptPermission, programs) {
171
+ if (!this._wallet) {
172
+ throw new WalletConnectionError("No wallet provider found");
173
+ }
174
+ const feature = this._wallet.features[import_aleo_wallet_standard.WalletFeatureName.CONNECT];
175
+ if (!feature || !feature.available) {
176
+ throw new WalletFeatureNotAvailableError(import_aleo_wallet_standard.WalletFeatureName.CONNECT);
177
+ }
178
+ try {
179
+ const account = await feature.connect(network, decryptPermission, programs);
180
+ this.account = account;
181
+ this.emit("connect", account);
182
+ return account;
183
+ } catch (err) {
184
+ this.emit("error", err);
185
+ throw err;
186
+ }
187
+ }
188
+ /**
189
+ * Disconnect from the wallet
190
+ */
191
+ async disconnect() {
192
+ if (!this._wallet) return;
193
+ const feature = this._wallet.features[import_aleo_wallet_standard.WalletFeatureName.CONNECT];
194
+ if (feature && feature.available) {
195
+ try {
196
+ await feature.disconnect();
197
+ } catch (err) {
198
+ this.emit("error", err);
199
+ }
200
+ }
201
+ this.account = void 0;
202
+ this.emit("disconnect");
203
+ }
204
+ /**
205
+ * Sign a message
206
+ * @param options Transaction options
207
+ * @returns The signed transaction
208
+ */
209
+ async signMessage(message) {
210
+ if (!this._wallet || !this.account) {
211
+ throw new WalletNotConnectedError();
212
+ }
213
+ const feature = this._wallet.features[import_aleo_wallet_standard.WalletFeatureName.SIGN];
214
+ if (!feature || !feature.available) {
215
+ throw new WalletFeatureNotAvailableError(import_aleo_wallet_standard.WalletFeatureName.SIGN);
216
+ }
217
+ return feature.signMessage(message);
218
+ }
219
+ /**
220
+ * Execute a transaction
221
+ * @param options Transaction options
222
+ * @returns The executed temporary transaction ID
223
+ */
224
+ async executeTransaction(options) {
225
+ if (!this._wallet || !this.account) {
226
+ throw new WalletNotConnectedError();
227
+ }
228
+ const feature = this._wallet.features[import_aleo_wallet_standard.WalletFeatureName.EXECUTE];
229
+ if (!feature || !feature.available) {
230
+ throw new WalletFeatureNotAvailableError(import_aleo_wallet_standard.WalletFeatureName.EXECUTE);
231
+ }
232
+ return feature.executeTransaction(options);
233
+ }
234
+ /**
235
+ * Get transaction status
236
+ * @param transactionId The transaction ID
237
+ * @returns The transaction status
238
+ */
239
+ async transactionStatus(transactionId) {
240
+ if (!this._wallet || !this.account) {
241
+ throw new WalletNotConnectedError();
242
+ }
243
+ const feature = this._wallet.features[import_aleo_wallet_standard.WalletFeatureName.TRANSACTION_STATUS];
244
+ if (!feature || !feature.available) {
245
+ throw new WalletFeatureNotAvailableError(import_aleo_wallet_standard.WalletFeatureName.TRANSACTION_STATUS);
246
+ }
247
+ return feature.transactionStatus(transactionId);
248
+ }
249
+ async switchNetwork(network) {
250
+ if (!this._wallet || !this.account) {
251
+ throw new WalletNotConnectedError();
252
+ }
253
+ const feature = this._wallet.features[import_aleo_wallet_standard.WalletFeatureName.SWITCH_NETWORK];
254
+ if (!feature || !feature.available) {
255
+ throw new WalletFeatureNotAvailableError(import_aleo_wallet_standard.WalletFeatureName.SWITCH_NETWORK);
256
+ }
257
+ await feature.switchNetwork(network);
258
+ this.emit("networkChange", network);
259
+ }
260
+ async decrypt(cipherText, tpk, programId, functionName, index) {
261
+ if (!this._wallet || !this.account) {
262
+ throw new WalletNotConnectedError();
263
+ }
264
+ const feature = this._wallet.features[import_aleo_wallet_standard.WalletFeatureName.DECRYPT];
265
+ if (!feature || !feature.available) {
266
+ throw new WalletFeatureNotAvailableError(import_aleo_wallet_standard.WalletFeatureName.DECRYPT);
267
+ }
268
+ return feature.decrypt(cipherText, tpk, programId, functionName, index);
269
+ }
270
+ async requestRecords(program, includePlaintext) {
271
+ if (!this._wallet || !this.account) {
272
+ throw new WalletNotConnectedError();
273
+ }
274
+ const feature = this._wallet.features[import_aleo_wallet_standard.WalletFeatureName.REQUEST_RECORDS];
275
+ if (!feature || !feature.available) {
276
+ throw new WalletFeatureNotAvailableError(import_aleo_wallet_standard.WalletFeatureName.REQUEST_RECORDS);
277
+ }
278
+ return feature.requestRecords(program, includePlaintext);
279
+ }
280
+ async executeDeployment(deployment) {
281
+ if (!this._wallet || !this.account) {
282
+ throw new WalletNotConnectedError();
283
+ }
284
+ const feature = this._wallet.features[import_aleo_wallet_standard.WalletFeatureName.EXECUTE_DEPLOYMENT];
285
+ if (!feature || !feature.available) {
286
+ throw new WalletFeatureNotAvailableError(import_aleo_wallet_standard.WalletFeatureName.EXECUTE_DEPLOYMENT);
287
+ }
288
+ return feature.executeDeployment(deployment);
289
+ }
290
+ };
291
+
292
+ // src/account.ts
293
+ function getShortAddress(address, prefixLength = 4, suffixLength = 4) {
294
+ if (!address) {
295
+ return "";
296
+ }
297
+ if (address.length <= prefixLength + suffixLength) {
298
+ return address;
299
+ }
300
+ return `${address.slice(0, prefixLength)}...${address.slice(-suffixLength)}`;
301
+ }
302
+ function createAccount(options) {
303
+ const address = `aleo1${Math.random().toString(36).substring(2, 15)}`;
304
+ const viewKey = options?.privateKey ? `AViewKey${Math.random().toString(36).substring(2, 15)}` : void 0;
305
+ return {
306
+ address,
307
+ viewKey,
308
+ privateKey: options?.privateKey
309
+ };
310
+ }
311
+
312
+ // src/types.ts
313
+ var import_aleo_wallet_standard2 = require("@provablehq/aleo-wallet-standard");
314
+ // Annotate the CommonJS export names for ESM import in node:
315
+ 0 && (module.exports = {
316
+ BaseAleoWalletAdapter,
317
+ DecryptPermission,
318
+ MethodNotImplementedError,
319
+ WalletConnectionError,
320
+ WalletDecryptionError,
321
+ WalletDecryptionNotAllowedError,
322
+ WalletDisconnectionError,
323
+ WalletError,
324
+ WalletFeatureNotAvailableError,
325
+ WalletNotConnectedError,
326
+ WalletNotReadyError,
327
+ WalletNotSelectedError,
328
+ WalletSignMessageError,
329
+ WalletSwitchNetworkError,
330
+ WalletTransactionError,
331
+ WalletTransactionRejectedError,
332
+ WalletTransactionTimeoutError,
333
+ createAccount,
334
+ getShortAddress
335
+ });
336
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/adapter.ts","../src/errors.ts","../src/account.ts","../src/types.ts"],"sourcesContent":["export { BaseAleoWalletAdapter } from './adapter';\nexport * from './account';\nexport * from './errors';\nexport * from './types';\n","import {\n Account,\n Network,\n TransactionOptions,\n TransactionStatusResponse,\n} from '@provablehq/aleo-types';\nimport {\n AleoChain,\n StandardWallet,\n WalletAdapter,\n WalletFeatureName,\n WalletReadyState,\n EventEmitter,\n WalletEvents,\n WalletName,\n WalletDecryptPermission,\n AleoDeployment,\n} from '@provablehq/aleo-wallet-standard';\nimport { WalletFeatureNotAvailableError, WalletNotConnectedError } from './errors';\nimport { WalletConnectionError } from './errors';\n\n/**\n * Base class for Aleo wallet adapters\n */\nexport abstract class BaseAleoWalletAdapter\n extends EventEmitter<WalletEvents>\n implements WalletAdapter\n{\n /**\n * The wallet name\n */\n abstract name: WalletName<string>;\n\n /**\n * The wallet URL\n */\n abstract url?: string;\n\n /**\n * The wallet icon\n */\n abstract icon?: string;\n\n /**\n * The wallet's ready state\n */\n abstract _readyState: WalletReadyState;\n get readyState(): WalletReadyState {\n return this._readyState;\n }\n protected set readyState(state: WalletReadyState) {\n if (state !== this._readyState) {\n this._readyState = state;\n this.emit('readyStateChange', state);\n }\n }\n\n /**\n * The connected account, if any\n */\n account?: Account;\n\n /**\n * The wallet's network\n */\n abstract network: Network;\n\n /**\n * The wallet's decrypt permission\n */\n abstract decryptPermission: WalletDecryptPermission;\n\n /**\n * The wallet's standard interface, if available\n */\n protected _wallet?: StandardWallet;\n\n /**\n * The supported chains\n */\n get chains(): AleoChain[] {\n return this._wallet?.features[WalletFeatureName.CHAINS]?.chains || [];\n }\n\n /**\n * The wallet's connected state\n */\n get connected(): boolean {\n return !!this.account;\n }\n\n /**\n * Connect to the wallet\n * @param network The network to connect to\n * @param decryptPermission The decrypt permission\n * @param programs The programs to connect to\n * @returns The connected account\n */\n async connect(\n network: Network,\n decryptPermission: WalletDecryptPermission,\n programs?: string[],\n ): Promise<Account> {\n if (!this._wallet) {\n throw new WalletConnectionError('No wallet provider found');\n }\n const feature = this._wallet.features[WalletFeatureName.CONNECT];\n if (!feature || !feature.available) {\n throw new WalletFeatureNotAvailableError(WalletFeatureName.CONNECT);\n }\n try {\n const account = await feature.connect(network, decryptPermission, programs);\n this.account = account;\n this.emit('connect', account);\n return account;\n } catch (err) {\n this.emit('error', err as Error);\n throw err;\n }\n }\n\n /**\n * Disconnect from the wallet\n */\n async disconnect(): Promise<void> {\n if (!this._wallet) return;\n const feature = this._wallet.features[WalletFeatureName.CONNECT];\n if (feature && feature.available) {\n try {\n await feature.disconnect();\n } catch (err) {\n this.emit('error', err as Error);\n }\n }\n this.account = undefined;\n this.emit('disconnect');\n }\n\n /**\n * Sign a message\n * @param options Transaction options\n * @returns The signed transaction\n */\n async signMessage(message: Uint8Array): Promise<Uint8Array> {\n if (!this._wallet || !this.account) {\n throw new WalletNotConnectedError();\n }\n const feature = this._wallet.features[WalletFeatureName.SIGN];\n if (!feature || !feature.available) {\n throw new WalletFeatureNotAvailableError(WalletFeatureName.SIGN);\n }\n return feature.signMessage(message);\n }\n\n /**\n * Execute a transaction\n * @param options Transaction options\n * @returns The executed temporary transaction ID\n */\n async executeTransaction(options: TransactionOptions): Promise<{ transactionId: string }> {\n if (!this._wallet || !this.account) {\n throw new WalletNotConnectedError();\n }\n const feature = this._wallet.features[WalletFeatureName.EXECUTE];\n if (!feature || !feature.available) {\n throw new WalletFeatureNotAvailableError(WalletFeatureName.EXECUTE);\n }\n return feature.executeTransaction(options);\n }\n\n /**\n * Get transaction status\n * @param transactionId The transaction ID\n * @returns The transaction status\n */\n async transactionStatus(transactionId: string): Promise<TransactionStatusResponse> {\n if (!this._wallet || !this.account) {\n throw new WalletNotConnectedError();\n }\n const feature = this._wallet.features[WalletFeatureName.TRANSACTION_STATUS];\n if (!feature || !feature.available) {\n throw new WalletFeatureNotAvailableError(WalletFeatureName.TRANSACTION_STATUS);\n }\n return feature.transactionStatus(transactionId);\n }\n\n async switchNetwork(network: Network): Promise<void> {\n if (!this._wallet || !this.account) {\n throw new WalletNotConnectedError();\n }\n const feature = this._wallet.features[WalletFeatureName.SWITCH_NETWORK];\n if (!feature || !feature.available) {\n throw new WalletFeatureNotAvailableError(WalletFeatureName.SWITCH_NETWORK);\n }\n await feature.switchNetwork(network);\n this.emit('networkChange', network);\n }\n\n async decrypt(\n cipherText: string,\n tpk?: string,\n programId?: string,\n functionName?: string,\n index?: number,\n ): Promise<string> {\n if (!this._wallet || !this.account) {\n throw new WalletNotConnectedError();\n }\n const feature = this._wallet.features[WalletFeatureName.DECRYPT];\n if (!feature || !feature.available) {\n throw new WalletFeatureNotAvailableError(WalletFeatureName.DECRYPT);\n }\n return feature.decrypt(cipherText, tpk, programId, functionName, index);\n }\n\n async requestRecords(program: string, includePlaintext: boolean): Promise<unknown[]> {\n if (!this._wallet || !this.account) {\n throw new WalletNotConnectedError();\n }\n const feature = this._wallet.features[WalletFeatureName.REQUEST_RECORDS];\n if (!feature || !feature.available) {\n throw new WalletFeatureNotAvailableError(WalletFeatureName.REQUEST_RECORDS);\n }\n\n return feature.requestRecords(program, includePlaintext);\n }\n\n async executeDeployment(deployment: AleoDeployment): Promise<{ transactionId: string }> {\n if (!this._wallet || !this.account) {\n throw new WalletNotConnectedError();\n }\n const feature = this._wallet.features[WalletFeatureName.EXECUTE_DEPLOYMENT];\n if (!feature || !feature.available) {\n throw new WalletFeatureNotAvailableError(WalletFeatureName.EXECUTE_DEPLOYMENT);\n }\n return feature.executeDeployment(deployment);\n }\n}\n","/**\n * Base wallet error\n */\nexport class WalletError extends Error {\n name = 'WalletError';\n}\n\n/**\n * Error thrown when a wallet is not connected\n */\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n\n constructor() {\n super('Wallet not connected');\n }\n}\n\n/**\n * Error thrown when the wallet connection is rejected\n */\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n\n constructor(message = 'Connection to wallet failed') {\n super(message);\n }\n}\n\n/**\n * Error thrown when a required wallet feature is not available\n */\nexport class WalletFeatureNotAvailableError extends WalletError {\n name = 'WalletFeatureNotAvailableError';\n\n constructor(feature: string) {\n super(`Wallet feature not available: ${feature}`);\n }\n}\n\n/**\n * Error thrown when a wallet transaction fails\n */\nexport class WalletTransactionError extends WalletError {\n name = 'WalletTransactionError';\n\n constructor(message = 'Transaction failed') {\n super(message);\n }\n}\n\n/**\n * Error thrown when a user rejects a transaction\n */\nexport class WalletTransactionRejectedError extends WalletTransactionError {\n name = 'WalletTransactionRejectedError';\n\n constructor() {\n super('Transaction rejected by user');\n }\n}\n\n/**\n * Error thrown when a transaction times out\n */\nexport class WalletTransactionTimeoutError extends WalletTransactionError {\n name = 'WalletTransactionTimeoutError';\n\n constructor() {\n super('Transaction timed out');\n }\n}\n\nexport class WalletNotSelectedError extends WalletError {\n name = 'WalletNotSelectedError';\n\n constructor() {\n super('Wallet not selected');\n }\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n\n constructor(message = 'Disconnection failed') {\n super(message);\n }\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n\n constructor(message = 'Failed to sign message') {\n super(message);\n }\n}\n\nexport class WalletSwitchNetworkError extends WalletError {\n name = 'WalletSwitchNetworkError';\n\n constructor(message = 'Failed to switch network') {\n super(message);\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n\n constructor() {\n super('Wallet not ready');\n }\n}\n\nexport class WalletDecryptionNotAllowedError extends WalletError {\n name = 'WalletDecryptionNotAllowedError';\n\n constructor() {\n super('Decryption not allowed');\n }\n}\nexport class WalletDecryptionError extends WalletError {\n name = 'WalletDecryptionError';\n\n constructor(message = 'Failed to decrypt') {\n super(message);\n }\n}\n\nexport class MethodNotImplementedError extends WalletError {\n name = 'MethodNotImplementedError';\n\n constructor(method: string) {\n super(`Method not implemented: ${method}`);\n }\n}\n","import { Account, AccountOptions } from '@provablehq/aleo-types';\n\n/**\n * Get the short address representation (for display)\n * @param address The full address\n * @param prefixLength The number of characters to keep at the beginning\n * @param suffixLength The number of characters to keep at the end\n * @returns The short address representation\n */\nexport function getShortAddress(address: string, prefixLength = 4, suffixLength = 4): string {\n if (!address) {\n return '';\n }\n\n if (address.length <= prefixLength + suffixLength) {\n return address;\n }\n\n return `${address.slice(0, prefixLength)}...${address.slice(-suffixLength)}`;\n}\n\n/**\n * Create a new account with the given options\n * @param options Account options\n * @returns The created account\n */\nexport function createAccount(options?: AccountOptions): Account {\n // This is a mock implementation. In a real implementation, you would\n // use the Aleo SDK to create an account.\n const address = `aleo1${Math.random().toString(36).substring(2, 15)}`;\n const viewKey = options?.privateKey\n ? `AViewKey${Math.random().toString(36).substring(2, 15)}`\n : undefined;\n\n return {\n address,\n viewKey,\n privateKey: options?.privateKey,\n };\n}\n","import { WalletDecryptPermission } from '@provablehq/aleo-wallet-standard';\n\nexport { WalletDecryptPermission as DecryptPermission };\n"],"mappings":"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","names":["import_aleo_wallet_standard"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,294 @@
1
+ // src/adapter.ts
2
+ import {
3
+ WalletFeatureName,
4
+ EventEmitter
5
+ } from "@provablehq/aleo-wallet-standard";
6
+
7
+ // src/errors.ts
8
+ var WalletError = class extends Error {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.name = "WalletError";
12
+ }
13
+ };
14
+ var WalletNotConnectedError = class extends WalletError {
15
+ constructor() {
16
+ super("Wallet not connected");
17
+ this.name = "WalletNotConnectedError";
18
+ }
19
+ };
20
+ var WalletConnectionError = class extends WalletError {
21
+ constructor(message = "Connection to wallet failed") {
22
+ super(message);
23
+ this.name = "WalletConnectionError";
24
+ }
25
+ };
26
+ var WalletFeatureNotAvailableError = class extends WalletError {
27
+ constructor(feature) {
28
+ super(`Wallet feature not available: ${feature}`);
29
+ this.name = "WalletFeatureNotAvailableError";
30
+ }
31
+ };
32
+ var WalletTransactionError = class extends WalletError {
33
+ constructor(message = "Transaction failed") {
34
+ super(message);
35
+ this.name = "WalletTransactionError";
36
+ }
37
+ };
38
+ var WalletTransactionRejectedError = class extends WalletTransactionError {
39
+ constructor() {
40
+ super("Transaction rejected by user");
41
+ this.name = "WalletTransactionRejectedError";
42
+ }
43
+ };
44
+ var WalletTransactionTimeoutError = class extends WalletTransactionError {
45
+ constructor() {
46
+ super("Transaction timed out");
47
+ this.name = "WalletTransactionTimeoutError";
48
+ }
49
+ };
50
+ var WalletNotSelectedError = class extends WalletError {
51
+ constructor() {
52
+ super("Wallet not selected");
53
+ this.name = "WalletNotSelectedError";
54
+ }
55
+ };
56
+ var WalletDisconnectionError = class extends WalletError {
57
+ constructor(message = "Disconnection failed") {
58
+ super(message);
59
+ this.name = "WalletDisconnectionError";
60
+ }
61
+ };
62
+ var WalletSignMessageError = class extends WalletError {
63
+ constructor(message = "Failed to sign message") {
64
+ super(message);
65
+ this.name = "WalletSignMessageError";
66
+ }
67
+ };
68
+ var WalletSwitchNetworkError = class extends WalletError {
69
+ constructor(message = "Failed to switch network") {
70
+ super(message);
71
+ this.name = "WalletSwitchNetworkError";
72
+ }
73
+ };
74
+ var WalletNotReadyError = class extends WalletError {
75
+ constructor() {
76
+ super("Wallet not ready");
77
+ this.name = "WalletNotReadyError";
78
+ }
79
+ };
80
+ var WalletDecryptionNotAllowedError = class extends WalletError {
81
+ constructor() {
82
+ super("Decryption not allowed");
83
+ this.name = "WalletDecryptionNotAllowedError";
84
+ }
85
+ };
86
+ var WalletDecryptionError = class extends WalletError {
87
+ constructor(message = "Failed to decrypt") {
88
+ super(message);
89
+ this.name = "WalletDecryptionError";
90
+ }
91
+ };
92
+ var MethodNotImplementedError = class extends WalletError {
93
+ constructor(method) {
94
+ super(`Method not implemented: ${method}`);
95
+ this.name = "MethodNotImplementedError";
96
+ }
97
+ };
98
+
99
+ // src/adapter.ts
100
+ var BaseAleoWalletAdapter = class extends EventEmitter {
101
+ get readyState() {
102
+ return this._readyState;
103
+ }
104
+ set readyState(state) {
105
+ if (state !== this._readyState) {
106
+ this._readyState = state;
107
+ this.emit("readyStateChange", state);
108
+ }
109
+ }
110
+ /**
111
+ * The supported chains
112
+ */
113
+ get chains() {
114
+ return this._wallet?.features[WalletFeatureName.CHAINS]?.chains || [];
115
+ }
116
+ /**
117
+ * The wallet's connected state
118
+ */
119
+ get connected() {
120
+ return !!this.account;
121
+ }
122
+ /**
123
+ * Connect to the wallet
124
+ * @param network The network to connect to
125
+ * @param decryptPermission The decrypt permission
126
+ * @param programs The programs to connect to
127
+ * @returns The connected account
128
+ */
129
+ async connect(network, decryptPermission, programs) {
130
+ if (!this._wallet) {
131
+ throw new WalletConnectionError("No wallet provider found");
132
+ }
133
+ const feature = this._wallet.features[WalletFeatureName.CONNECT];
134
+ if (!feature || !feature.available) {
135
+ throw new WalletFeatureNotAvailableError(WalletFeatureName.CONNECT);
136
+ }
137
+ try {
138
+ const account = await feature.connect(network, decryptPermission, programs);
139
+ this.account = account;
140
+ this.emit("connect", account);
141
+ return account;
142
+ } catch (err) {
143
+ this.emit("error", err);
144
+ throw err;
145
+ }
146
+ }
147
+ /**
148
+ * Disconnect from the wallet
149
+ */
150
+ async disconnect() {
151
+ if (!this._wallet) return;
152
+ const feature = this._wallet.features[WalletFeatureName.CONNECT];
153
+ if (feature && feature.available) {
154
+ try {
155
+ await feature.disconnect();
156
+ } catch (err) {
157
+ this.emit("error", err);
158
+ }
159
+ }
160
+ this.account = void 0;
161
+ this.emit("disconnect");
162
+ }
163
+ /**
164
+ * Sign a message
165
+ * @param options Transaction options
166
+ * @returns The signed transaction
167
+ */
168
+ async signMessage(message) {
169
+ if (!this._wallet || !this.account) {
170
+ throw new WalletNotConnectedError();
171
+ }
172
+ const feature = this._wallet.features[WalletFeatureName.SIGN];
173
+ if (!feature || !feature.available) {
174
+ throw new WalletFeatureNotAvailableError(WalletFeatureName.SIGN);
175
+ }
176
+ return feature.signMessage(message);
177
+ }
178
+ /**
179
+ * Execute a transaction
180
+ * @param options Transaction options
181
+ * @returns The executed temporary transaction ID
182
+ */
183
+ async executeTransaction(options) {
184
+ if (!this._wallet || !this.account) {
185
+ throw new WalletNotConnectedError();
186
+ }
187
+ const feature = this._wallet.features[WalletFeatureName.EXECUTE];
188
+ if (!feature || !feature.available) {
189
+ throw new WalletFeatureNotAvailableError(WalletFeatureName.EXECUTE);
190
+ }
191
+ return feature.executeTransaction(options);
192
+ }
193
+ /**
194
+ * Get transaction status
195
+ * @param transactionId The transaction ID
196
+ * @returns The transaction status
197
+ */
198
+ async transactionStatus(transactionId) {
199
+ if (!this._wallet || !this.account) {
200
+ throw new WalletNotConnectedError();
201
+ }
202
+ const feature = this._wallet.features[WalletFeatureName.TRANSACTION_STATUS];
203
+ if (!feature || !feature.available) {
204
+ throw new WalletFeatureNotAvailableError(WalletFeatureName.TRANSACTION_STATUS);
205
+ }
206
+ return feature.transactionStatus(transactionId);
207
+ }
208
+ async switchNetwork(network) {
209
+ if (!this._wallet || !this.account) {
210
+ throw new WalletNotConnectedError();
211
+ }
212
+ const feature = this._wallet.features[WalletFeatureName.SWITCH_NETWORK];
213
+ if (!feature || !feature.available) {
214
+ throw new WalletFeatureNotAvailableError(WalletFeatureName.SWITCH_NETWORK);
215
+ }
216
+ await feature.switchNetwork(network);
217
+ this.emit("networkChange", network);
218
+ }
219
+ async decrypt(cipherText, tpk, programId, functionName, index) {
220
+ if (!this._wallet || !this.account) {
221
+ throw new WalletNotConnectedError();
222
+ }
223
+ const feature = this._wallet.features[WalletFeatureName.DECRYPT];
224
+ if (!feature || !feature.available) {
225
+ throw new WalletFeatureNotAvailableError(WalletFeatureName.DECRYPT);
226
+ }
227
+ return feature.decrypt(cipherText, tpk, programId, functionName, index);
228
+ }
229
+ async requestRecords(program, includePlaintext) {
230
+ if (!this._wallet || !this.account) {
231
+ throw new WalletNotConnectedError();
232
+ }
233
+ const feature = this._wallet.features[WalletFeatureName.REQUEST_RECORDS];
234
+ if (!feature || !feature.available) {
235
+ throw new WalletFeatureNotAvailableError(WalletFeatureName.REQUEST_RECORDS);
236
+ }
237
+ return feature.requestRecords(program, includePlaintext);
238
+ }
239
+ async executeDeployment(deployment) {
240
+ if (!this._wallet || !this.account) {
241
+ throw new WalletNotConnectedError();
242
+ }
243
+ const feature = this._wallet.features[WalletFeatureName.EXECUTE_DEPLOYMENT];
244
+ if (!feature || !feature.available) {
245
+ throw new WalletFeatureNotAvailableError(WalletFeatureName.EXECUTE_DEPLOYMENT);
246
+ }
247
+ return feature.executeDeployment(deployment);
248
+ }
249
+ };
250
+
251
+ // src/account.ts
252
+ function getShortAddress(address, prefixLength = 4, suffixLength = 4) {
253
+ if (!address) {
254
+ return "";
255
+ }
256
+ if (address.length <= prefixLength + suffixLength) {
257
+ return address;
258
+ }
259
+ return `${address.slice(0, prefixLength)}...${address.slice(-suffixLength)}`;
260
+ }
261
+ function createAccount(options) {
262
+ const address = `aleo1${Math.random().toString(36).substring(2, 15)}`;
263
+ const viewKey = options?.privateKey ? `AViewKey${Math.random().toString(36).substring(2, 15)}` : void 0;
264
+ return {
265
+ address,
266
+ viewKey,
267
+ privateKey: options?.privateKey
268
+ };
269
+ }
270
+
271
+ // src/types.ts
272
+ import { WalletDecryptPermission as WalletDecryptPermission2 } from "@provablehq/aleo-wallet-standard";
273
+ export {
274
+ BaseAleoWalletAdapter,
275
+ WalletDecryptPermission2 as DecryptPermission,
276
+ MethodNotImplementedError,
277
+ WalletConnectionError,
278
+ WalletDecryptionError,
279
+ WalletDecryptionNotAllowedError,
280
+ WalletDisconnectionError,
281
+ WalletError,
282
+ WalletFeatureNotAvailableError,
283
+ WalletNotConnectedError,
284
+ WalletNotReadyError,
285
+ WalletNotSelectedError,
286
+ WalletSignMessageError,
287
+ WalletSwitchNetworkError,
288
+ WalletTransactionError,
289
+ WalletTransactionRejectedError,
290
+ WalletTransactionTimeoutError,
291
+ createAccount,
292
+ getShortAddress
293
+ };
294
+ //# sourceMappingURL=index.mjs.map