@provablehq/aleo-wallet-adaptor-puzzle 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/LICENSE +674 -0
- package/README.md +31 -0
- package/dist/index.d.mts +146 -0
- package/dist/index.d.ts +146 -0
- package/dist/index.js +321 -0
- package/dist/index.mjs +320 -0
- package/package.json +45 -0
- package/src/PuzzleWalletAdapter.ts +382 -0
- package/src/icon.ts +2 -0
- package/src/index.ts +2 -0
- package/src/types.ts +44 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
// src/PuzzleWalletAdapter.ts
|
|
2
|
+
import {
|
|
3
|
+
Network as Network2,
|
|
4
|
+
TransactionStatus
|
|
5
|
+
} from "@provablehq/aleo-types";
|
|
6
|
+
import {
|
|
7
|
+
WalletDecryptPermission,
|
|
8
|
+
WalletReadyState
|
|
9
|
+
} from "@provablehq/aleo-wallet-standard";
|
|
10
|
+
import {
|
|
11
|
+
BaseAleoWalletAdapter,
|
|
12
|
+
DecryptPermission,
|
|
13
|
+
MethodNotImplementedError,
|
|
14
|
+
WalletConnectionError,
|
|
15
|
+
WalletDecryptionError,
|
|
16
|
+
WalletDecryptionNotAllowedError,
|
|
17
|
+
WalletDisconnectionError,
|
|
18
|
+
WalletError,
|
|
19
|
+
WalletNotConnectedError,
|
|
20
|
+
WalletSignMessageError,
|
|
21
|
+
WalletTransactionError
|
|
22
|
+
} from "@provablehq/aleo-wallet-adaptor-core";
|
|
23
|
+
import {
|
|
24
|
+
connect,
|
|
25
|
+
disconnect,
|
|
26
|
+
requestCreateEvent,
|
|
27
|
+
requestSignature,
|
|
28
|
+
EventType,
|
|
29
|
+
decrypt as puzzleDecrypt,
|
|
30
|
+
getRecords,
|
|
31
|
+
getEvent
|
|
32
|
+
} from "@puzzlehq/sdk-core";
|
|
33
|
+
|
|
34
|
+
// src/types.ts
|
|
35
|
+
import { Network } from "@provablehq/aleo-types";
|
|
36
|
+
import { Network as PuzzleNetwork } from "@puzzlehq/sdk-core";
|
|
37
|
+
var PUZZLE_NETWORK_MAP = {
|
|
38
|
+
[Network.MAINNET]: PuzzleNetwork.AleoMainnet,
|
|
39
|
+
[Network.TESTNET3]: PuzzleNetwork.AleoTestnet,
|
|
40
|
+
[Network.CANARY]: PuzzleNetwork.AleoTestnet
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// src/icon.ts
|
|
44
|
+
var PuzzleIcon = "data:image/webp;base64,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";
|
|
45
|
+
|
|
46
|
+
// src/PuzzleWalletAdapter.ts
|
|
47
|
+
var PuzzleWalletAdapter = class extends BaseAleoWalletAdapter {
|
|
48
|
+
/**
|
|
49
|
+
* Create a new Puzzle wallet adapter
|
|
50
|
+
* @param config Adapter configuration
|
|
51
|
+
*/
|
|
52
|
+
constructor(config) {
|
|
53
|
+
super();
|
|
54
|
+
/**
|
|
55
|
+
* The wallet name
|
|
56
|
+
*/
|
|
57
|
+
this.name = "Puzzle Wallet";
|
|
58
|
+
/**
|
|
59
|
+
* The wallet URL
|
|
60
|
+
*/
|
|
61
|
+
this.url = "https://puzzle.online/wallet";
|
|
62
|
+
/**
|
|
63
|
+
* The wallet icon (base64-encoded SVG)
|
|
64
|
+
*/
|
|
65
|
+
this.icon = PuzzleIcon;
|
|
66
|
+
/**
|
|
67
|
+
* Current network
|
|
68
|
+
*/
|
|
69
|
+
this.network = Network2.TESTNET3;
|
|
70
|
+
/**
|
|
71
|
+
* The wallet's decrypt permission
|
|
72
|
+
*/
|
|
73
|
+
this.decryptPermission = WalletDecryptPermission.NoDecrypt;
|
|
74
|
+
this._readyState = typeof window === "undefined" || typeof document === "undefined" ? WalletReadyState.UNSUPPORTED : WalletReadyState.NOT_DETECTED;
|
|
75
|
+
/**
|
|
76
|
+
* Public key
|
|
77
|
+
*/
|
|
78
|
+
this._publicKey = "";
|
|
79
|
+
this._appName = config?.appName || "Aleo App";
|
|
80
|
+
this._appIconUrl = config?.appIconUrl;
|
|
81
|
+
this._appDescription = config?.appDescription;
|
|
82
|
+
this._checkAvailability();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Check if Puzzle wallet is available
|
|
86
|
+
*/
|
|
87
|
+
_checkAvailability() {
|
|
88
|
+
if (typeof window === "undefined") {
|
|
89
|
+
this.readyState = WalletReadyState.UNSUPPORTED;
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
this._window = window;
|
|
93
|
+
if (this._window.puzzle) {
|
|
94
|
+
this.readyState = WalletReadyState.INSTALLED;
|
|
95
|
+
} else {
|
|
96
|
+
const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
|
|
97
|
+
if (isMobile) {
|
|
98
|
+
this.readyState = WalletReadyState.LOADABLE;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Connect to Puzzle wallet
|
|
104
|
+
* @param network The network to connect to
|
|
105
|
+
* @returns The connected account
|
|
106
|
+
*/
|
|
107
|
+
async connect(network, decryptPermission, programs) {
|
|
108
|
+
try {
|
|
109
|
+
if (this.readyState !== WalletReadyState.INSTALLED) {
|
|
110
|
+
throw new WalletConnectionError("Puzzle Wallet is not available");
|
|
111
|
+
}
|
|
112
|
+
const response = await connect({
|
|
113
|
+
dAppInfo: {
|
|
114
|
+
name: this._appName,
|
|
115
|
+
description: this._appDescription,
|
|
116
|
+
iconUrl: this._appIconUrl
|
|
117
|
+
},
|
|
118
|
+
permissions: {
|
|
119
|
+
programIds: {
|
|
120
|
+
[PUZZLE_NETWORK_MAP[network]]: programs
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
if (!response || typeof response !== "object" || !("connection" in response)) {
|
|
125
|
+
throw new WalletConnectionError("Invalid response from wallet");
|
|
126
|
+
}
|
|
127
|
+
this.network = network;
|
|
128
|
+
this.decryptPermission = decryptPermission;
|
|
129
|
+
const address = response.connection?.address;
|
|
130
|
+
if (!address) {
|
|
131
|
+
throw new WalletConnectionError("No address returned from wallet");
|
|
132
|
+
}
|
|
133
|
+
this._publicKey = address;
|
|
134
|
+
const account = {
|
|
135
|
+
address: this._publicKey
|
|
136
|
+
};
|
|
137
|
+
this.account = account;
|
|
138
|
+
this.emit("connect", account);
|
|
139
|
+
return account;
|
|
140
|
+
} catch (err) {
|
|
141
|
+
this.emit("error", err instanceof Error ? err : new Error(String(err)));
|
|
142
|
+
throw new WalletConnectionError(err instanceof Error ? err.message : "Connection failed");
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Disconnect from Puzzle wallet
|
|
147
|
+
*/
|
|
148
|
+
async disconnect() {
|
|
149
|
+
try {
|
|
150
|
+
await disconnect();
|
|
151
|
+
this._publicKey = "";
|
|
152
|
+
this.account = void 0;
|
|
153
|
+
this.emit("disconnect");
|
|
154
|
+
} catch (err) {
|
|
155
|
+
this.emit("error", err instanceof Error ? err : new Error(String(err)));
|
|
156
|
+
throw new WalletDisconnectionError(
|
|
157
|
+
err instanceof Error ? err.message : "Disconnection failed"
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Sign a message with Puzzle wallet
|
|
163
|
+
* @param message The message to sign
|
|
164
|
+
* @returns The signed message
|
|
165
|
+
*/
|
|
166
|
+
async signMessage(message) {
|
|
167
|
+
if (!this._publicKey || !this.account) {
|
|
168
|
+
throw new WalletNotConnectedError();
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
const signature = await requestSignature({
|
|
172
|
+
message: message.toString(),
|
|
173
|
+
address: this._publicKey
|
|
174
|
+
});
|
|
175
|
+
return new TextEncoder().encode(signature.signature);
|
|
176
|
+
} catch (error) {
|
|
177
|
+
throw new WalletSignMessageError(
|
|
178
|
+
error instanceof Error ? error.message : "Failed to sign message"
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
async decrypt(cipherText) {
|
|
183
|
+
if (!this._publicKey || !this.account) {
|
|
184
|
+
throw new WalletNotConnectedError();
|
|
185
|
+
}
|
|
186
|
+
switch (this.decryptPermission) {
|
|
187
|
+
case WalletDecryptPermission.NoDecrypt:
|
|
188
|
+
throw new WalletDecryptionNotAllowedError();
|
|
189
|
+
case WalletDecryptPermission.UponRequest:
|
|
190
|
+
case DecryptPermission.AutoDecrypt:
|
|
191
|
+
case DecryptPermission.OnChainHistory: {
|
|
192
|
+
try {
|
|
193
|
+
const text = await puzzleDecrypt({ ciphertexts: [cipherText] });
|
|
194
|
+
return text.plaintexts[0];
|
|
195
|
+
} catch (error) {
|
|
196
|
+
throw new WalletDecryptionError(
|
|
197
|
+
error instanceof Error ? error.message : "Failed to decrypt"
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
default:
|
|
202
|
+
throw new WalletDecryptionError();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Execute a transaction with Puzzle wallet
|
|
207
|
+
* @param options Transaction options
|
|
208
|
+
* @returns The executed temporary transaction ID
|
|
209
|
+
*/
|
|
210
|
+
async executeTransaction(options) {
|
|
211
|
+
if (!this._publicKey || !this.account) {
|
|
212
|
+
throw new WalletNotConnectedError();
|
|
213
|
+
}
|
|
214
|
+
if (options.privateFee) {
|
|
215
|
+
throw new WalletTransactionError("Private fee is not supported by Puzzle wallet");
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
const fee = options.fee ? options.fee / 1e6 : 1e-3;
|
|
219
|
+
const requestData = {
|
|
220
|
+
type: EventType.Execute,
|
|
221
|
+
programId: options.program,
|
|
222
|
+
functionId: options.function,
|
|
223
|
+
fee,
|
|
224
|
+
inputs: options.inputs,
|
|
225
|
+
address: this._publicKey,
|
|
226
|
+
network: PUZZLE_NETWORK_MAP[this.network]
|
|
227
|
+
};
|
|
228
|
+
const result = await requestCreateEvent(requestData);
|
|
229
|
+
if (result.error) {
|
|
230
|
+
throw new WalletTransactionError(result.error);
|
|
231
|
+
}
|
|
232
|
+
if (!result.eventId) {
|
|
233
|
+
throw new WalletTransactionError("Could not create transaction");
|
|
234
|
+
}
|
|
235
|
+
return {
|
|
236
|
+
transactionId: result.eventId
|
|
237
|
+
};
|
|
238
|
+
} catch (error) {
|
|
239
|
+
console.error("Puzzle Wallet executeTransaction error", error);
|
|
240
|
+
if (error instanceof WalletError) {
|
|
241
|
+
throw error;
|
|
242
|
+
}
|
|
243
|
+
throw new WalletTransactionError(
|
|
244
|
+
error instanceof Error ? error.message : "Failed to execute transaction"
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Get transaction status
|
|
250
|
+
* @param transactionId The transaction ID
|
|
251
|
+
* @returns The transaction status
|
|
252
|
+
*/
|
|
253
|
+
async transactionStatus(transactionId) {
|
|
254
|
+
if (!this._publicKey || !this.account) {
|
|
255
|
+
throw new WalletNotConnectedError();
|
|
256
|
+
}
|
|
257
|
+
try {
|
|
258
|
+
const result = await getEvent({
|
|
259
|
+
id: transactionId,
|
|
260
|
+
address: this._publicKey,
|
|
261
|
+
network: PUZZLE_NETWORK_MAP[this.network]
|
|
262
|
+
});
|
|
263
|
+
return {
|
|
264
|
+
status: result.event?.status || TransactionStatus.PENDING,
|
|
265
|
+
transactionId: result.event?.transactionId,
|
|
266
|
+
error: result.event?.error
|
|
267
|
+
};
|
|
268
|
+
} catch (error) {
|
|
269
|
+
throw new WalletTransactionError(
|
|
270
|
+
error instanceof Error ? error.message : "Failed to get transaction status"
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Request records from Leo wallet
|
|
276
|
+
* @param program The program to request records from
|
|
277
|
+
* @param includePlaintext Whether to include plaintext on each record
|
|
278
|
+
* @returns The records
|
|
279
|
+
*/
|
|
280
|
+
async requestRecords(program) {
|
|
281
|
+
if (!this._publicKey || !this.account) {
|
|
282
|
+
throw new WalletNotConnectedError();
|
|
283
|
+
}
|
|
284
|
+
try {
|
|
285
|
+
const result = await getRecords({
|
|
286
|
+
filter: {
|
|
287
|
+
programIds: [program],
|
|
288
|
+
status: "All"
|
|
289
|
+
},
|
|
290
|
+
address: this._publicKey,
|
|
291
|
+
network: PUZZLE_NETWORK_MAP[this.network]
|
|
292
|
+
});
|
|
293
|
+
return result?.records || [];
|
|
294
|
+
} catch (error) {
|
|
295
|
+
throw new WalletError(error instanceof Error ? error.message : "Failed to request records");
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Switch the network
|
|
300
|
+
* @param network The network to switch to
|
|
301
|
+
*/
|
|
302
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
303
|
+
async switchNetwork(_network) {
|
|
304
|
+
console.error("Puzzle Wallet does not support switching networks");
|
|
305
|
+
throw new MethodNotImplementedError("switchNetwork");
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Execute a deployment
|
|
309
|
+
* @param deployment The deployment to execute
|
|
310
|
+
* @returns The executed transaction ID
|
|
311
|
+
*/
|
|
312
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
313
|
+
async executeDeployment(_deployment) {
|
|
314
|
+
throw new MethodNotImplementedError("executeDeployment");
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
export {
|
|
318
|
+
PUZZLE_NETWORK_MAP,
|
|
319
|
+
PuzzleWalletAdapter
|
|
320
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@provablehq/aleo-wallet-adaptor-puzzle",
|
|
3
|
+
"version": "0.1.1-alpha.0",
|
|
4
|
+
"description": "Puzzle wallet adapter for Aleo",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"license": "GPL-3.0-or-later",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"src"
|
|
12
|
+
],
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@puzzlehq/sdk-core": "^1.0.3",
|
|
15
|
+
"@provablehq/aleo-wallet-adaptor-core": "0.1.1-alpha.0",
|
|
16
|
+
"@provablehq/aleo-types": "0.1.1-alpha.0",
|
|
17
|
+
"@provablehq/aleo-wallet-standard": "0.1.1-alpha.0"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/ProvableHQ/aleo-dev-toolkit.git",
|
|
22
|
+
"directory": "packages/aleo-wallet-adaptor/wallets/puzzle"
|
|
23
|
+
},
|
|
24
|
+
"homepage": "https://provable.com/",
|
|
25
|
+
"keywords": [
|
|
26
|
+
"aleo",
|
|
27
|
+
"wallet",
|
|
28
|
+
"adapter",
|
|
29
|
+
"puzzle"
|
|
30
|
+
],
|
|
31
|
+
"author": "Provable Labs",
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"rimraf": "^5.0.5",
|
|
37
|
+
"tsup": "^7.0.0",
|
|
38
|
+
"typescript": "^5.0.0"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "tsup",
|
|
42
|
+
"clean": "rimraf dist",
|
|
43
|
+
"dev": "tsup --watch"
|
|
44
|
+
}
|
|
45
|
+
}
|