@exodus/hw-ledger 3.8.2 → 3.9.1
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/CHANGELOG.md +18 -0
- package/lib/atoms/index.d.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/module/assets/basemainnet.d.ts +1 -1
- package/lib/module/assets/matic.d.ts +1 -1
- package/lib/module/assets/utils/psbt.d.ts +1 -1
- package/lib/module/assets/utils/psbt.js +1 -1
- package/lib/module/assets/utils/xpub.d.ts +1 -1
- package/lib/module/device.d.ts +2 -1
- package/lib/module/device.js +12 -6
- package/lib/module/management/application.js +1 -1
- package/lib/redux/index.d.ts +2 -2
- package/lib/redux/selectors/bluetoothScanning.d.ts +1 -1
- package/lib/redux/selectors/bluetoothStatus.d.ts +1 -1
- package/lib/redux/selectors/index.d.ts +2 -2
- package/package.json +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.9.1](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/hw-ledger@3.9.0...@exodus/hw-ledger@3.9.1) (2026-04-15)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- fix(hw-ledger): add missing @exodus/storage-interface dependency (#16012)
|
|
11
|
+
|
|
12
|
+
- fix(hw-ledger): use correct variable in listApplications format check (#15064)
|
|
13
|
+
|
|
14
|
+
- fix: remove baseUrl from root tsconfig to fix .d.ts import paths (#15993)
|
|
15
|
+
|
|
16
|
+
## [3.9.0](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/hw-ledger@3.8.2...@exodus/hw-ledger@3.9.0) (2026-01-21)
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
- feat(bip322-js): export Verifier for BIP-322 signature verification (#14641)
|
|
21
|
+
|
|
22
|
+
- feat: trezor passphrase support (#14965)
|
|
23
|
+
|
|
6
24
|
## [3.8.2](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/hw-ledger@3.8.1...@exodus/hw-ledger@3.8.2) (2025-12-17)
|
|
7
25
|
|
|
8
26
|
### Bug Fixes
|
package/lib/atoms/index.d.ts
CHANGED
package/lib/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ declare const hardwareWalletLedger: ({ bluetoothScannerTimeout, }?: Partial<HwLe
|
|
|
22
22
|
readonly id: "walletPolicyAtom";
|
|
23
23
|
readonly type: "atom";
|
|
24
24
|
readonly factory: ({ storage }: {
|
|
25
|
-
storage: import("
|
|
25
|
+
storage: import("@exodus/storage-interface").Storage<Record<string, Buffer>>;
|
|
26
26
|
}) => import("@exodus/atoms").Atom<Record<string, Buffer<ArrayBufferLike>> | {}>;
|
|
27
27
|
readonly dependencies: readonly ["storage"];
|
|
28
28
|
readonly public: true;
|
|
@@ -4,6 +4,6 @@ declare const metadata: {
|
|
|
4
4
|
supportedVersions: string;
|
|
5
5
|
primaryAssetName: string;
|
|
6
6
|
}[];
|
|
7
|
-
handler: (transport: import("@ledgerhq/hw-transport").default) => Promise<import("
|
|
7
|
+
handler: (transport: import("@ledgerhq/hw-transport").default) => Promise<import("@exodus/hw-common").HardwareWalletAssetHandler>;
|
|
8
8
|
};
|
|
9
9
|
export default metadata;
|
|
@@ -4,6 +4,6 @@ declare const metadata: {
|
|
|
4
4
|
supportedVersions: string;
|
|
5
5
|
primaryAssetName: string;
|
|
6
6
|
}[];
|
|
7
|
-
handler: (transport: import("@ledgerhq/hw-transport").default) => Promise<import("
|
|
7
|
+
handler: (transport: import("@ledgerhq/hw-transport").default) => Promise<import("@exodus/hw-common").HardwareWalletAssetHandler>;
|
|
8
8
|
};
|
|
9
9
|
export default metadata;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PsbtV2 } from '@exodus/ledger-bitcoin';
|
|
2
2
|
import { DefaultWalletPolicy, WalletPolicy } from '@exodus/ledger-bitcoin';
|
|
3
|
-
import type { MultisigData } from '
|
|
3
|
+
import type { MultisigData } from '@exodus/hw-common';
|
|
4
4
|
export declare function assertPsbtOnlyHasAllowedDerivationPaths(psbt: PsbtV2, masterFingerprint: string, derivationPaths: string[]): void;
|
|
5
5
|
export declare function tagPsbtWithDerivationPaths(psbt: PsbtV2, masterFingerprint: string, derivationPathToPublicKeyMap: Record<string, Buffer>, addressToDerivationPathMap?: Record<string, string>): string[];
|
|
6
6
|
export declare const getWalletPolicy: (fpr: string, xpub: string, purpose: string, coin: string, account: string) => DefaultWalletPolicy;
|
|
@@ -110,7 +110,7 @@ function computeScriptPubKeyToDerivationPathMap(derivationPathToPublicKeyMap) {
|
|
|
110
110
|
const nestedSegwit = payments.p2sh({
|
|
111
111
|
redeem: payments.p2wpkh({ pubkey: publicKey }),
|
|
112
112
|
}).output;
|
|
113
|
-
assert(nestedSegwit, 'failed to compute
|
|
113
|
+
assert(nestedSegwit, 'failed to compute p2sh scriptPubKey');
|
|
114
114
|
Object.assign(acc, {
|
|
115
115
|
[nestedSegwit.toString('hex')]: derivationPath,
|
|
116
116
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function buildFauxXPUB(publicKey: Buffer, chainCode: Buffer):
|
|
1
|
+
export declare function buildFauxXPUB(publicKey: Buffer, chainCode: Buffer): string;
|
package/lib/module/device.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GetAddressParams, GetPublicKeyParams, GetXPubParams, HardwareWalletDescriptor, HardwareWalletDevice, SignMessageParams, SignTransactionParams } from '@exodus/hw-common';
|
|
1
|
+
import type { EnsureDeviceReadyParams, GetAddressParams, GetPublicKeyParams, GetXPubParams, HardwareWalletDescriptor, HardwareWalletDevice, SignMessageParams, SignTransactionParams } from '@exodus/hw-common';
|
|
2
2
|
import type { TransportFactory } from './types';
|
|
3
3
|
import type { Atom } from '@exodus/atoms';
|
|
4
4
|
export type Dependencies = {
|
|
@@ -12,6 +12,7 @@ export declare class LedgerDevice implements HardwareWalletDevice {
|
|
|
12
12
|
get descriptor(): HardwareWalletDescriptor;
|
|
13
13
|
cancelAction: () => Promise<void>;
|
|
14
14
|
ensureApplicationIsOpened: (baseAssetName: string) => Promise<void>;
|
|
15
|
+
ensureDeviceReady: ({ baseAssetName }: EnsureDeviceReadyParams) => Promise<void>;
|
|
15
16
|
listSupportedAssetNames: () => Promise<string[]>;
|
|
16
17
|
listInstalledAssetNames: () => Promise<string[]>;
|
|
17
18
|
listUseableAssetNames: () => Promise<string[]>;
|
package/lib/module/device.js
CHANGED
|
@@ -73,7 +73,7 @@ export class LedgerDevice {
|
|
|
73
73
|
await this.#quitApplication();
|
|
74
74
|
}
|
|
75
75
|
};
|
|
76
|
-
ensureApplicationIsOpened = async (baseAssetName) => {
|
|
76
|
+
#ensureApplicationIsOpened = async (baseAssetName) => {
|
|
77
77
|
const { applications } = this.#getAssetApplication(baseAssetName);
|
|
78
78
|
const supportedApplicationNames = applications.map(({ applicationName }) => applicationName);
|
|
79
79
|
const currentApplicationInfo = await this.#getInformation();
|
|
@@ -108,6 +108,12 @@ export class LedgerDevice {
|
|
|
108
108
|
throw new UnsupportedVersionError(baseAssetName, desiredApplicationInfo.name, desiredApplicationInfo.version, supportedVersions);
|
|
109
109
|
}
|
|
110
110
|
};
|
|
111
|
+
ensureApplicationIsOpened = async (baseAssetName) => {
|
|
112
|
+
await this.#ensureApplicationIsOpened(baseAssetName);
|
|
113
|
+
};
|
|
114
|
+
ensureDeviceReady = async ({ baseAssetName }) => {
|
|
115
|
+
await this.#ensureApplicationIsOpened(baseAssetName);
|
|
116
|
+
};
|
|
111
117
|
listSupportedAssetNames = async () => {
|
|
112
118
|
return supportedBaseAssetNames;
|
|
113
119
|
};
|
|
@@ -130,35 +136,35 @@ export class LedgerDevice {
|
|
|
130
136
|
return assetNames || [];
|
|
131
137
|
};
|
|
132
138
|
getAddress = async (params) => {
|
|
133
|
-
await this
|
|
139
|
+
await this.#ensureApplicationIsOpened(params.assetName);
|
|
134
140
|
return this.#runInSession(async (transport) => {
|
|
135
141
|
const handler = await this.#getAssetApplication(params.assetName).handler(transport, this.#walletPolicyAtom);
|
|
136
142
|
return handler.getAddress(params);
|
|
137
143
|
});
|
|
138
144
|
};
|
|
139
145
|
getXPub = async (params) => {
|
|
140
|
-
await this
|
|
146
|
+
await this.#ensureApplicationIsOpened(params.assetName);
|
|
141
147
|
return this.#runInSession(async (transport) => {
|
|
142
148
|
const handler = await this.#getAssetApplication(params.assetName).handler(transport);
|
|
143
149
|
return handler.getXPub(params);
|
|
144
150
|
});
|
|
145
151
|
};
|
|
146
152
|
getPublicKey = async (params) => {
|
|
147
|
-
await this
|
|
153
|
+
await this.#ensureApplicationIsOpened(params.assetName);
|
|
148
154
|
return this.#runInSession(async (transport) => {
|
|
149
155
|
const handler = await this.#getAssetApplication(params.assetName).handler(transport);
|
|
150
156
|
return handler.getPublicKey(params);
|
|
151
157
|
});
|
|
152
158
|
};
|
|
153
159
|
signTransaction = async (params) => {
|
|
154
|
-
await this
|
|
160
|
+
await this.#ensureApplicationIsOpened(params.assetName);
|
|
155
161
|
return this.#runInSession(async (transport) => {
|
|
156
162
|
const handler = await this.#getAssetApplication(params.assetName).handler(transport, this.#walletPolicyAtom);
|
|
157
163
|
return handler.signTransaction(params);
|
|
158
164
|
});
|
|
159
165
|
};
|
|
160
166
|
signMessage = async (params) => {
|
|
161
|
-
await this
|
|
167
|
+
await this.#ensureApplicationIsOpened(params.assetName);
|
|
162
168
|
return this.#runInSession(async (transport) => {
|
|
163
169
|
const handler = await this.#getAssetApplication(params.assetName).handler(transport);
|
|
164
170
|
return handler.signMessage(params);
|
package/lib/redux/index.d.ts
CHANGED
|
@@ -17,13 +17,13 @@ declare const exchangeReduxDefinition: {
|
|
|
17
17
|
readonly id: "bluetoothStatus";
|
|
18
18
|
readonly resultFunction: (state: LedgerHardwareWalletState) => import("../atoms").BluetoothStatus;
|
|
19
19
|
readonly dependencies: readonly [{
|
|
20
|
-
readonly selector:
|
|
20
|
+
readonly selector: "$state";
|
|
21
21
|
}];
|
|
22
22
|
} | {
|
|
23
23
|
readonly id: "bluetoothScanning";
|
|
24
24
|
readonly resultFunction: (state: LedgerHardwareWalletState) => boolean;
|
|
25
25
|
readonly dependencies: readonly [{
|
|
26
|
-
readonly selector:
|
|
26
|
+
readonly selector: "$state";
|
|
27
27
|
}];
|
|
28
28
|
})[];
|
|
29
29
|
};
|
|
@@ -3,7 +3,7 @@ declare const bluetoothScanningSelectorDefinition: {
|
|
|
3
3
|
readonly id: "bluetoothScanning";
|
|
4
4
|
readonly resultFunction: (state: LedgerHardwareWalletState) => boolean;
|
|
5
5
|
readonly dependencies: readonly [{
|
|
6
|
-
readonly selector:
|
|
6
|
+
readonly selector: "$state";
|
|
7
7
|
}];
|
|
8
8
|
};
|
|
9
9
|
export default bluetoothScanningSelectorDefinition;
|
|
@@ -3,7 +3,7 @@ declare const bluetoothStatusSelectorDefinition: {
|
|
|
3
3
|
readonly id: "bluetoothStatus";
|
|
4
4
|
readonly resultFunction: (state: LedgerHardwareWalletState) => import("../../atoms").BluetoothStatus;
|
|
5
5
|
readonly dependencies: readonly [{
|
|
6
|
-
readonly selector:
|
|
6
|
+
readonly selector: "$state";
|
|
7
7
|
}];
|
|
8
8
|
};
|
|
9
9
|
export default bluetoothStatusSelectorDefinition;
|
|
@@ -2,13 +2,13 @@ declare const ledgerSelectors: ({
|
|
|
2
2
|
readonly id: "bluetoothStatus";
|
|
3
3
|
readonly resultFunction: (state: import("../initial-state").LedgerHardwareWalletState) => import("../../atoms").BluetoothStatus;
|
|
4
4
|
readonly dependencies: readonly [{
|
|
5
|
-
readonly selector:
|
|
5
|
+
readonly selector: "$state";
|
|
6
6
|
}];
|
|
7
7
|
} | {
|
|
8
8
|
readonly id: "bluetoothScanning";
|
|
9
9
|
readonly resultFunction: (state: import("../initial-state").LedgerHardwareWalletState) => boolean;
|
|
10
10
|
readonly dependencies: readonly [{
|
|
11
|
-
readonly selector:
|
|
11
|
+
readonly selector: "$state";
|
|
12
12
|
}];
|
|
13
13
|
})[];
|
|
14
14
|
export default ledgerSelectors;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exodus/hw-ledger",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.9.1",
|
|
4
4
|
"description": "The ledger module",
|
|
5
5
|
"author": "Exodus Movement, Inc.",
|
|
6
6
|
"repository": {
|
|
@@ -30,19 +30,20 @@
|
|
|
30
30
|
"prepublishOnly": "yarn run -T build --scope @exodus/hw-ledger"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@exodus/atoms": "^
|
|
33
|
+
"@exodus/atoms": "^10.3.3",
|
|
34
34
|
"@exodus/bip322-js": "^3.1.0",
|
|
35
35
|
"@exodus/bitcoinjs": "^2.0.0",
|
|
36
36
|
"@exodus/bytes": "^1.0.0-rc.6",
|
|
37
37
|
"@exodus/crypto": "^1.0.0-rc.29",
|
|
38
38
|
"@exodus/ethereumjs": "^1.5.0",
|
|
39
39
|
"@exodus/ethersproject-transactions": "^5.4.2-exodus.0",
|
|
40
|
-
"@exodus/hw-common": "^3.
|
|
40
|
+
"@exodus/hw-common": "^3.4.0",
|
|
41
41
|
"@exodus/ledger-bitcoin": "^0.2.3-exodus.6",
|
|
42
42
|
"@exodus/ledgerhq-devices": "^8.1.0-exodus.3",
|
|
43
43
|
"@exodus/ledgerhq-hw-app-eth": "^6.33.7-exodus.8",
|
|
44
44
|
"@exodus/redux-dependency-injection": "^4.0.0",
|
|
45
45
|
"@exodus/ripple-binary-codec": "^0.2.6",
|
|
46
|
+
"@exodus/storage-interface": "^1.0.0",
|
|
46
47
|
"@ledgerhq/hw-app-solana": "^7.0.10",
|
|
47
48
|
"@ledgerhq/hw-app-trx": "^6.29.4",
|
|
48
49
|
"@ledgerhq/hw-app-xrp": "^6.32.7",
|
|
@@ -65,5 +66,5 @@
|
|
|
65
66
|
"access": "public",
|
|
66
67
|
"provenance": false
|
|
67
68
|
},
|
|
68
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "dd67667f6d9e59c554300dfa9b3acfef228eb6d8"
|
|
69
70
|
}
|