@onekeyfe/hardware-cli 1.1.26-alpha.106 → 1.1.26-alpha.4
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/.eslintignore +4 -0
- package/dist/chains.d.ts +6 -0
- package/dist/chains.js +191 -87
- package/dist/cli.js +615 -496
- package/dist/index.d.ts +16 -89
- package/dist/index.js +1 -2
- package/dist/sdk.d.ts +15 -5
- package/dist/sdk.js +237 -131
- package/dist/session.d.ts +22 -0
- package/dist/session.js +83 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.js +5 -0
- package/dist/storage/process-utils.d.ts +2 -0
- package/dist/storage/process-utils.js +44 -0
- package/dist/storage/secure-storage.linux.d.ts +11 -0
- package/dist/storage/secure-storage.linux.js +59 -0
- package/dist/storage/secure-storage.macos.d.ts +11 -0
- package/dist/storage/secure-storage.macos.js +65 -0
- package/dist/storage/storage-factory.d.ts +3 -0
- package/dist/storage/storage-factory.js +14 -0
- package/dist/storage/types.d.ts +18 -0
- package/dist/storage/types.js +2 -0
- package/package.json +15 -13
- package/src/chains.ts +229 -85
- package/src/cli.ts +620 -297
- package/src/sdk.ts +244 -125
- package/src/session.ts +89 -0
- package/src/storage/index.ts +2 -0
- package/src/storage/process-utils.ts +50 -0
- package/src/storage/secure-storage.linux.ts +68 -0
- package/src/storage/secure-storage.macos.ts +68 -0
- package/src/storage/storage-factory.ts +13 -0
- package/src/storage/types.ts +17 -0
- package/tsconfig.json +5 -7
- package/.claude-plugin/plugin.json +0 -14
- package/AGENTS.md +0 -40
- package/CLAUDE.md +0 -40
- package/README.md +0 -112
- package/evals/cases.json +0 -373
- package/evals/run-evals.sh +0 -136
- package/rollup.config.js +0 -28
package/src/chains.ts
CHANGED
|
@@ -11,6 +11,27 @@
|
|
|
11
11
|
|
|
12
12
|
import type { CoreApi } from '@onekeyfe/hd-core';
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Extract params shared by every SDK method. Forwarded unconditionally:
|
|
16
|
+
*
|
|
17
|
+
* - `passphraseState` / `useEmptyPassphrase` — wallet selection.
|
|
18
|
+
* - `skipPassphraseCheck` — tells the SDK to skip its own
|
|
19
|
+
* `checkPassphraseStateSafety` + error-114 gate so our interactive
|
|
20
|
+
* `REQUEST_PASSPHRASE` handler can own the passphrase prompt flow.
|
|
21
|
+
* `runCommand` always sets this to `true` via `getCommonParams`.
|
|
22
|
+
*
|
|
23
|
+
* All three are forwarded even when falsy/undefined — SDK treats missing
|
|
24
|
+
* and undefined identically. This avoids silent losses when inner calls
|
|
25
|
+
* (e.g. `resolveBatchGetAddress`) reconstruct a params object manually.
|
|
26
|
+
*/
|
|
27
|
+
function extractCommonParams(params: CommonCLIParams): Record<string, unknown> {
|
|
28
|
+
return {
|
|
29
|
+
passphraseState: params.passphraseState,
|
|
30
|
+
useEmptyPassphrase: params.useEmptyPassphrase,
|
|
31
|
+
skipPassphraseCheck: params.skipPassphraseCheck,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
14
35
|
// Default BIP44 derivation paths per chain
|
|
15
36
|
// Sources: developer-portal core-api-guide.mdx + chain-specific docs
|
|
16
37
|
const DEFAULT_PATHS: Record<string, string> = {
|
|
@@ -30,7 +51,7 @@ const DEFAULT_PATHS: Record<string, string> = {
|
|
|
30
51
|
nostr: "m/44'/1237'/0'/0/0",
|
|
31
52
|
filecoin: "m/44'/461'/0'/0/0",
|
|
32
53
|
kaspa: "m/44'/111111'/0'/0/0",
|
|
33
|
-
algo: "m/44'/283'/0'/0/0",
|
|
54
|
+
algo: "m/44'/283'/0'/0'/0'",
|
|
34
55
|
conflux: "m/44'/503'/0'/0/0",
|
|
35
56
|
nervos: "m/44'/309'/0'/0/0",
|
|
36
57
|
alephium: "m/44'/1234'/0'/0/0",
|
|
@@ -83,12 +104,18 @@ function getDefaultPath(chain: string): string {
|
|
|
83
104
|
/**
|
|
84
105
|
* Common params passed to all SDK methods.
|
|
85
106
|
* Reference: packages/core/src/types/api/export.ts (CommonParams)
|
|
107
|
+
*
|
|
108
|
+
* `skipPassphraseCheck` is CLI-internal plumbing — runCommand sets it to
|
|
109
|
+
* true so the interactive REQUEST_PASSPHRASE handler can own the prompt
|
|
110
|
+
* flow without the SDK rejecting with error 114 first. Exposed on the
|
|
111
|
+
* interface so inner helpers (batch flows, etc.) can forward it safely.
|
|
86
112
|
*/
|
|
87
113
|
export interface CommonCLIParams {
|
|
88
114
|
connectId?: string;
|
|
89
115
|
deviceId?: string;
|
|
90
116
|
passphraseState?: string;
|
|
91
117
|
useEmptyPassphrase?: boolean;
|
|
118
|
+
skipPassphraseCheck?: boolean;
|
|
92
119
|
}
|
|
93
120
|
|
|
94
121
|
export interface GetAddressParams extends CommonCLIParams {
|
|
@@ -103,14 +130,17 @@ export async function resolveGetAddress(sdk: CoreApi, params: GetAddressParams)
|
|
|
103
130
|
const showOnOneKey = params.showOnDevice ?? true;
|
|
104
131
|
const connectId = params.connectId || '';
|
|
105
132
|
const deviceId = params.deviceId || '';
|
|
133
|
+
const commonParams = extractCommonParams(params);
|
|
106
134
|
|
|
107
135
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
108
136
|
const chainMethodMap: Record<string, () => Promise<any>> = {
|
|
109
|
-
evm: () => sdk.evmGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
110
|
-
btc: () =>
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
137
|
+
evm: () => sdk.evmGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
138
|
+
btc: () =>
|
|
139
|
+
sdk.btcGetAddress(connectId, deviceId, { path, showOnOneKey, coin: 'btc', ...commonParams }),
|
|
140
|
+
sol: () => sdk.solGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
141
|
+
tron: () => sdk.tronGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
142
|
+
cosmos: () =>
|
|
143
|
+
sdk.cosmosGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
114
144
|
// Cardano requires networkId, protocolMagic, derivationType
|
|
115
145
|
cardano: () =>
|
|
116
146
|
sdk.cardanoGetAddress(connectId, deviceId, {
|
|
@@ -119,6 +149,7 @@ export async function resolveGetAddress(sdk: CoreApi, params: GetAddressParams)
|
|
|
119
149
|
protocolMagic: 764824073, // mainnet magic
|
|
120
150
|
derivationType: 1, // Icarus
|
|
121
151
|
showOnOneKey,
|
|
152
|
+
...commonParams,
|
|
122
153
|
}),
|
|
123
154
|
// Polkadot requires network param
|
|
124
155
|
polkadot: () =>
|
|
@@ -127,26 +158,57 @@ export async function resolveGetAddress(sdk: CoreApi, params: GetAddressParams)
|
|
|
127
158
|
prefix: 0,
|
|
128
159
|
network: 'polkadot',
|
|
129
160
|
showOnOneKey,
|
|
161
|
+
...commonParams,
|
|
162
|
+
}),
|
|
163
|
+
aptos: () => sdk.aptosGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
164
|
+
sui: () => sdk.suiGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
165
|
+
near: () => sdk.nearGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
166
|
+
xrp: () => sdk.xrpGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
167
|
+
stellar: () =>
|
|
168
|
+
sdk.stellarGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
169
|
+
ton: () => sdk.tonGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
170
|
+
filecoin: () =>
|
|
171
|
+
sdk.filecoinGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
172
|
+
kaspa: () =>
|
|
173
|
+
sdk.kaspaGetAddress(connectId, deviceId, {
|
|
174
|
+
path,
|
|
175
|
+
showOnOneKey,
|
|
176
|
+
prefix: 'kaspa',
|
|
177
|
+
...commonParams,
|
|
178
|
+
}),
|
|
179
|
+
algo: () => sdk.algoGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
180
|
+
conflux: () =>
|
|
181
|
+
sdk.confluxGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
182
|
+
nervos: () =>
|
|
183
|
+
sdk.nervosGetAddress(connectId, deviceId, {
|
|
184
|
+
path,
|
|
185
|
+
showOnOneKey,
|
|
186
|
+
network: 'ckb',
|
|
187
|
+
...commonParams,
|
|
188
|
+
}),
|
|
189
|
+
alephium: () =>
|
|
190
|
+
sdk.alephiumGetAddress(connectId, deviceId, {
|
|
191
|
+
path,
|
|
192
|
+
showOnOneKey,
|
|
193
|
+
group: 0,
|
|
194
|
+
...commonParams,
|
|
195
|
+
}),
|
|
196
|
+
neo: () => sdk.neoGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
197
|
+
starcoin: () =>
|
|
198
|
+
sdk.starcoinGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
199
|
+
nem: () =>
|
|
200
|
+
sdk.nemGetAddress(connectId, deviceId, { path, showOnOneKey, network: 104, ...commonParams }),
|
|
201
|
+
dnx: () => sdk.dnxGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
202
|
+
scdo: () => sdk.scdoGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
203
|
+
benfen: () =>
|
|
204
|
+
sdk.benfenGetAddress(connectId, deviceId, { path, showOnOneKey, ...commonParams }),
|
|
205
|
+
nexa: () =>
|
|
206
|
+
sdk.nexaGetAddress(connectId, deviceId, {
|
|
207
|
+
path,
|
|
208
|
+
showOnOneKey,
|
|
209
|
+
prefix: 'nexa',
|
|
210
|
+
...commonParams,
|
|
130
211
|
}),
|
|
131
|
-
aptos: () => sdk.aptosGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
132
|
-
sui: () => sdk.suiGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
133
|
-
near: () => sdk.nearGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
134
|
-
xrp: () => sdk.xrpGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
135
|
-
stellar: () => sdk.stellarGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
136
|
-
ton: () => sdk.tonGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
137
|
-
filecoin: () => sdk.filecoinGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
138
|
-
kaspa: () => sdk.kaspaGetAddress(connectId, deviceId, { path, showOnOneKey, prefix: 'kaspa' }),
|
|
139
|
-
algo: () => sdk.algoGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
140
|
-
conflux: () => sdk.confluxGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
141
|
-
nervos: () => sdk.nervosGetAddress(connectId, deviceId, { path, showOnOneKey, network: 'ckb' }),
|
|
142
|
-
alephium: () => sdk.alephiumGetAddress(connectId, deviceId, { path, showOnOneKey, group: 0 }),
|
|
143
|
-
neo: () => sdk.neoGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
144
|
-
starcoin: () => sdk.starcoinGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
145
|
-
nem: () => sdk.nemGetAddress(connectId, deviceId, { path, showOnOneKey, network: 104 }),
|
|
146
|
-
dnx: () => sdk.dnxGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
147
|
-
scdo: () => sdk.scdoGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
148
|
-
benfen: () => sdk.benfenGetAddress(connectId, deviceId, { path, showOnOneKey }),
|
|
149
|
-
nexa: () => sdk.nexaGetAddress(connectId, deviceId, { path, showOnOneKey, prefix: 'nexa' }),
|
|
150
212
|
};
|
|
151
213
|
|
|
152
214
|
const method = chainMethodMap[chain];
|
|
@@ -171,18 +233,20 @@ export async function resolveGetPublicKey(sdk: CoreApi, params: GetPublicKeyPara
|
|
|
171
233
|
const path = params.path || getDefaultPath(chain);
|
|
172
234
|
const connectId = params.connectId || '';
|
|
173
235
|
const deviceId = params.deviceId || '';
|
|
236
|
+
const commonParams = extractCommonParams(params);
|
|
174
237
|
|
|
175
238
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
176
239
|
const chainMethodMap: Record<string, () => Promise<any>> = {
|
|
177
|
-
evm: () => sdk.evmGetPublicKey(connectId, deviceId, { path }),
|
|
178
|
-
btc: () => sdk.btcGetPublicKey(connectId, deviceId, { path, coin: 'btc' }),
|
|
179
|
-
aptos: () => sdk.aptosGetPublicKey(connectId, deviceId, { path }),
|
|
180
|
-
cosmos: () => sdk.cosmosGetPublicKey(connectId, deviceId, { path }),
|
|
181
|
-
sui: () => sdk.suiGetPublicKey(connectId, deviceId, { path }),
|
|
182
|
-
starcoin: () => sdk.starcoinGetPublicKey(connectId, deviceId, { path }),
|
|
183
|
-
nostr: () => sdk.nostrGetPublicKey(connectId, deviceId, { path }),
|
|
184
|
-
benfen: () => sdk.benfenGetPublicKey(connectId, deviceId, { path }),
|
|
185
|
-
cardano: () =>
|
|
240
|
+
evm: () => sdk.evmGetPublicKey(connectId, deviceId, { path, ...commonParams }),
|
|
241
|
+
btc: () => sdk.btcGetPublicKey(connectId, deviceId, { path, coin: 'btc', ...commonParams }),
|
|
242
|
+
aptos: () => sdk.aptosGetPublicKey(connectId, deviceId, { path, ...commonParams }),
|
|
243
|
+
cosmos: () => sdk.cosmosGetPublicKey(connectId, deviceId, { path, ...commonParams }),
|
|
244
|
+
sui: () => sdk.suiGetPublicKey(connectId, deviceId, { path, ...commonParams }),
|
|
245
|
+
starcoin: () => sdk.starcoinGetPublicKey(connectId, deviceId, { path, ...commonParams }),
|
|
246
|
+
nostr: () => sdk.nostrGetPublicKey(connectId, deviceId, { path, ...commonParams }),
|
|
247
|
+
benfen: () => sdk.benfenGetPublicKey(connectId, deviceId, { path, ...commonParams }),
|
|
248
|
+
cardano: () =>
|
|
249
|
+
sdk.cardanoGetPublicKey(connectId, deviceId, { path, derivationType: 1, ...commonParams }),
|
|
186
250
|
};
|
|
187
251
|
|
|
188
252
|
const method = chainMethodMap[chain];
|
|
@@ -210,60 +274,125 @@ export async function resolveSignTransaction(sdk: CoreApi, params: SignTransacti
|
|
|
210
274
|
const connectId = params.connectId || '';
|
|
211
275
|
const deviceId = params.deviceId || '';
|
|
212
276
|
const tx = params.transaction;
|
|
277
|
+
const commonParams = extractCommonParams(params);
|
|
213
278
|
|
|
214
279
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
215
280
|
const chainMethodMap: Record<string, () => Promise<any>> = {
|
|
216
281
|
// EVM: chainId is inside the transaction object, not top-level
|
|
217
|
-
evm: () =>
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
282
|
+
evm: () =>
|
|
283
|
+
sdk.evmSignTransaction(connectId, deviceId, {
|
|
284
|
+
path,
|
|
285
|
+
transaction: tx as any,
|
|
286
|
+
...commonParams,
|
|
287
|
+
}),
|
|
288
|
+
btc: () =>
|
|
289
|
+
sdk.btcSignTransaction(connectId, deviceId, { coin: 'btc', ...(tx as any), ...commonParams }),
|
|
290
|
+
sol: () =>
|
|
291
|
+
sdk.solSignTransaction(connectId, deviceId, {
|
|
292
|
+
path,
|
|
293
|
+
rawTx: tx.rawTx as string,
|
|
294
|
+
...commonParams,
|
|
295
|
+
}),
|
|
296
|
+
tron: () =>
|
|
297
|
+
sdk.tronSignTransaction(connectId, deviceId, {
|
|
298
|
+
path,
|
|
299
|
+
transaction: tx as any,
|
|
300
|
+
...commonParams,
|
|
301
|
+
}),
|
|
222
302
|
cosmos: () =>
|
|
223
|
-
sdk.cosmosSignTransaction(connectId, deviceId, {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
303
|
+
sdk.cosmosSignTransaction(connectId, deviceId, {
|
|
304
|
+
path,
|
|
305
|
+
rawTx: tx.rawTx as string,
|
|
306
|
+
...commonParams,
|
|
307
|
+
}),
|
|
308
|
+
aptos: () =>
|
|
309
|
+
sdk.aptosSignTransaction(connectId, deviceId, {
|
|
310
|
+
path,
|
|
311
|
+
rawTx: tx.rawTx as string,
|
|
312
|
+
...commonParams,
|
|
313
|
+
}),
|
|
314
|
+
sui: () =>
|
|
315
|
+
sdk.suiSignTransaction(connectId, deviceId, {
|
|
316
|
+
path,
|
|
317
|
+
rawTx: tx.rawTx as string,
|
|
318
|
+
...commonParams,
|
|
319
|
+
}),
|
|
320
|
+
near: () =>
|
|
321
|
+
sdk.nearSignTransaction(connectId, deviceId, {
|
|
322
|
+
path,
|
|
323
|
+
rawTx: tx.rawTx as string,
|
|
324
|
+
...commonParams,
|
|
325
|
+
}),
|
|
228
326
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
229
327
|
xrp: () =>
|
|
230
328
|
(sdk.xrpSignTransaction as (...args: unknown[]) => Promise<unknown>)(connectId, deviceId, {
|
|
231
329
|
path,
|
|
232
330
|
transaction: tx,
|
|
331
|
+
...commonParams,
|
|
233
332
|
}),
|
|
234
333
|
stellar: () =>
|
|
235
334
|
sdk.stellarSignTransaction(connectId, deviceId, {
|
|
236
335
|
path,
|
|
237
336
|
networkPassphrase: tx.networkPassphrase as string,
|
|
238
337
|
transaction: tx.transaction as any,
|
|
338
|
+
...commonParams,
|
|
239
339
|
}),
|
|
240
|
-
// Polkadot: requires prefix param
|
|
241
340
|
polkadot: () =>
|
|
242
341
|
sdk.polkadotSignTransaction(connectId, deviceId, {
|
|
243
342
|
path,
|
|
244
343
|
rawTx: tx.rawTx as string,
|
|
245
344
|
network: (tx.network as string) || 'polkadot',
|
|
246
345
|
prefix: (tx.prefix as number) ?? 0,
|
|
346
|
+
...commonParams,
|
|
247
347
|
}),
|
|
248
348
|
filecoin: () =>
|
|
249
|
-
sdk.filecoinSignTransaction(connectId, deviceId, {
|
|
250
|
-
|
|
251
|
-
|
|
349
|
+
sdk.filecoinSignTransaction(connectId, deviceId, {
|
|
350
|
+
path,
|
|
351
|
+
rawTx: tx.rawTx as string,
|
|
352
|
+
...commonParams,
|
|
353
|
+
}),
|
|
354
|
+
kaspa: () => sdk.kaspaSignTransaction(connectId, deviceId, { ...(tx as any), ...commonParams }),
|
|
355
|
+
algo: () =>
|
|
356
|
+
sdk.algoSignTransaction(connectId, deviceId, {
|
|
357
|
+
path,
|
|
358
|
+
rawTx: tx.rawTx as string,
|
|
359
|
+
...commonParams,
|
|
360
|
+
}),
|
|
252
361
|
conflux: () =>
|
|
253
|
-
sdk.confluxSignTransaction(connectId, deviceId, {
|
|
254
|
-
|
|
362
|
+
sdk.confluxSignTransaction(connectId, deviceId, {
|
|
363
|
+
path,
|
|
364
|
+
transaction: tx as any,
|
|
365
|
+
...commonParams,
|
|
366
|
+
}),
|
|
367
|
+
nervos: () =>
|
|
368
|
+
sdk.nervosSignTransaction(connectId, deviceId, { ...(tx as any), ...commonParams }),
|
|
255
369
|
alephium: () =>
|
|
256
|
-
sdk.alephiumSignTransaction(connectId, deviceId, {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
370
|
+
sdk.alephiumSignTransaction(connectId, deviceId, {
|
|
371
|
+
path,
|
|
372
|
+
rawTx: tx.rawTx as string,
|
|
373
|
+
...commonParams,
|
|
374
|
+
}),
|
|
375
|
+
neo: () =>
|
|
376
|
+
sdk.neoSignTransaction(connectId, deviceId, { path, ...(tx as any), ...commonParams }),
|
|
377
|
+
dnx: () =>
|
|
378
|
+
sdk.dnxSignTransaction(connectId, deviceId, { path, ...(tx as any), ...commonParams }),
|
|
379
|
+
scdo: () =>
|
|
380
|
+
sdk.scdoSignTransaction(connectId, deviceId, { path, ...(tx as any), ...commonParams }),
|
|
261
381
|
benfen: () =>
|
|
262
|
-
sdk.benfenSignTransaction(connectId, deviceId, {
|
|
263
|
-
|
|
264
|
-
|
|
382
|
+
sdk.benfenSignTransaction(connectId, deviceId, {
|
|
383
|
+
path,
|
|
384
|
+
rawTx: tx.rawTx as string,
|
|
385
|
+
...commonParams,
|
|
386
|
+
}),
|
|
387
|
+
nexa: () => sdk.nexaSignTransaction(connectId, deviceId, { ...(tx as any), ...commonParams }),
|
|
388
|
+
cardano: () =>
|
|
389
|
+
sdk.cardanoSignTransaction(connectId, deviceId, { ...(tx as any), ...commonParams }),
|
|
265
390
|
starcoin: () =>
|
|
266
|
-
sdk.starcoinSignTransaction(connectId, deviceId, {
|
|
391
|
+
sdk.starcoinSignTransaction(connectId, deviceId, {
|
|
392
|
+
path,
|
|
393
|
+
rawTx: tx.rawTx as string,
|
|
394
|
+
...commonParams,
|
|
395
|
+
}),
|
|
267
396
|
};
|
|
268
397
|
|
|
269
398
|
const method = chainMethodMap[chain];
|
|
@@ -286,6 +415,7 @@ export async function resolveSignMessage(sdk: CoreApi, params: SignMessageParams
|
|
|
286
415
|
const path = params.path || getDefaultPath(chain);
|
|
287
416
|
const connectId = params.connectId || '';
|
|
288
417
|
const deviceId = params.deviceId || '';
|
|
418
|
+
const commonParams = extractCommonParams(params);
|
|
289
419
|
|
|
290
420
|
// Most chains use `messageHex` (hex-encoded). CLI accepts either:
|
|
291
421
|
// - Already hex-encoded string (starts with "0x" or matches /^[0-9a-fA-F]+$/)
|
|
@@ -296,39 +426,49 @@ export async function resolveSignMessage(sdk: CoreApi, params: SignMessageParams
|
|
|
296
426
|
|
|
297
427
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
298
428
|
const chainMethodMap: Record<string, () => Promise<any>> = {
|
|
299
|
-
evm: () => sdk.evmSignMessage(connectId, deviceId, { path, messageHex: msg }),
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
429
|
+
evm: () => sdk.evmSignMessage(connectId, deviceId, { path, messageHex: msg, ...commonParams }),
|
|
430
|
+
btc: () =>
|
|
431
|
+
sdk.btcSignMessage(connectId, deviceId, {
|
|
432
|
+
path,
|
|
433
|
+
messageHex: msg,
|
|
434
|
+
coin: 'btc',
|
|
435
|
+
...commonParams,
|
|
436
|
+
}),
|
|
437
|
+
sol: () => sdk.solSignMessage(connectId, deviceId, { path, messageHex: msg, ...commonParams }),
|
|
438
|
+
tron: () =>
|
|
439
|
+
sdk.tronSignMessage(connectId, deviceId, { path, messageHex: msg, ...commonParams }),
|
|
305
440
|
aptos: () =>
|
|
306
|
-
sdk.aptosSignMessage(connectId, deviceId, {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
441
|
+
sdk.aptosSignMessage(connectId, deviceId, {
|
|
442
|
+
path,
|
|
443
|
+
payload: { message: msg } as any,
|
|
444
|
+
...commonParams,
|
|
445
|
+
}),
|
|
446
|
+
sui: () => sdk.suiSignMessage(connectId, deviceId, { path, messageHex: msg, ...commonParams }),
|
|
447
|
+
conflux: () =>
|
|
448
|
+
sdk.confluxSignMessage(connectId, deviceId, { path, messageHex: msg, ...commonParams }),
|
|
449
|
+
starcoin: () =>
|
|
450
|
+
sdk.starcoinSignMessage(connectId, deviceId, { path, messageHex: msg, ...commonParams }),
|
|
313
451
|
ton: () => {
|
|
314
|
-
|
|
315
|
-
|
|
452
|
+
// TON expects structured params, parse from original raw input (not hex-encoded)
|
|
453
|
+
const tonParams = JSON.parse(raw);
|
|
454
|
+
return sdk.tonSignMessage(connectId, deviceId, { path, ...tonParams, ...commonParams });
|
|
316
455
|
},
|
|
317
|
-
// Nostr: event must be a NostrEvent object (kind, content, tags, created_at)
|
|
318
456
|
nostr: () => {
|
|
319
|
-
|
|
320
|
-
|
|
457
|
+
// Nostr expects a JSON event object, parse from original raw input (not hex-encoded)
|
|
458
|
+
const event = JSON.parse(raw);
|
|
459
|
+
return sdk.nostrSignEvent(connectId, deviceId, { path, event, ...commonParams });
|
|
321
460
|
},
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
// Alephium: requires messageType
|
|
461
|
+
scdo: () =>
|
|
462
|
+
sdk.scdoSignMessage(connectId, deviceId, { path, messageHex: msg, ...commonParams }),
|
|
325
463
|
alephium: () =>
|
|
326
464
|
sdk.alephiumSignMessage(connectId, deviceId, {
|
|
327
465
|
path,
|
|
328
466
|
messageHex: msg,
|
|
329
467
|
messageType: 'alephium',
|
|
468
|
+
...commonParams,
|
|
330
469
|
}),
|
|
331
|
-
benfen: () =>
|
|
470
|
+
benfen: () =>
|
|
471
|
+
sdk.benfenSignMessage(connectId, deviceId, { path, messageHex: msg, ...commonParams }),
|
|
332
472
|
// Cardano: uses `message` field, requires networkId
|
|
333
473
|
cardano: () =>
|
|
334
474
|
sdk.cardanoSignMessage(connectId, deviceId, {
|
|
@@ -336,6 +476,7 @@ export async function resolveSignMessage(sdk: CoreApi, params: SignMessageParams
|
|
|
336
476
|
message: msg,
|
|
337
477
|
derivationType: 1,
|
|
338
478
|
networkId: 1,
|
|
479
|
+
...commonParams,
|
|
339
480
|
}),
|
|
340
481
|
};
|
|
341
482
|
|
|
@@ -361,16 +502,19 @@ export interface BatchGetAddressParams extends CommonCLIParams {
|
|
|
361
502
|
}
|
|
362
503
|
|
|
363
504
|
export async function resolveBatchGetAddress(sdk: CoreApi, params: BatchGetAddressParams) {
|
|
364
|
-
//
|
|
505
|
+
// Spread `common` so every CommonCLIParams field (including
|
|
506
|
+
// skipPassphraseCheck) propagates to each inner resolveGetAddress
|
|
507
|
+
// call. Enumerating fields manually used to drop skipPassphraseCheck
|
|
508
|
+
// and cause error 114 on hidden-wallet batch calls.
|
|
509
|
+
const { bundle, ...common } = params;
|
|
365
510
|
const results: Array<Record<string, unknown>> = [];
|
|
366
|
-
for (const item of
|
|
511
|
+
for (const item of bundle) {
|
|
367
512
|
try {
|
|
368
513
|
const result = await resolveGetAddress(sdk, {
|
|
514
|
+
...common,
|
|
369
515
|
chain: item.chain,
|
|
370
516
|
path: item.path,
|
|
371
517
|
showOnDevice: item.showOnDevice ?? false,
|
|
372
|
-
connectId: params.connectId,
|
|
373
|
-
deviceId: params.deviceId,
|
|
374
518
|
});
|
|
375
519
|
results.push(result);
|
|
376
520
|
} catch (err) {
|