@sovereign-sdk/signers 0.5.1 → 0.5.2
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 +76 -128
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +76 -130
- package/dist/index.mjs.map +1 -1
- package/dist/ledger-solana/default.js +59 -89
- package/dist/ledger-solana/default.js.map +1 -1
- package/dist/ledger-solana/default.mjs +59 -90
- package/dist/ledger-solana/default.mjs.map +1 -1
- package/dist/ledger-solana/node.js +59 -89
- package/dist/ledger-solana/node.js.map +1 -1
- package/dist/ledger-solana/node.mjs +59 -90
- package/dist/ledger-solana/node.mjs.map +1 -1
- package/dist/wasm.d.mts +1 -0
- package/dist/wasm.d.ts +1 -0
- package/dist/wasm.js +68 -84
- package/dist/wasm.js.map +1 -1
- package/dist/wasm.mjs +68 -85
- package/dist/wasm.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -26,26 +26,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var __async = (__this, __arguments, generator) => {
|
|
30
|
-
return new Promise((resolve, reject) => {
|
|
31
|
-
var fulfilled = (value) => {
|
|
32
|
-
try {
|
|
33
|
-
step(generator.next(value));
|
|
34
|
-
} catch (e) {
|
|
35
|
-
reject(e);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var rejected = (value) => {
|
|
39
|
-
try {
|
|
40
|
-
step(generator.throw(value));
|
|
41
|
-
} catch (e) {
|
|
42
|
-
reject(e);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
46
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
29
|
|
|
50
30
|
// src/ledger-solana/default.ts
|
|
51
31
|
var default_exports = {};
|
|
@@ -66,83 +46,73 @@ var LedgerSolanaSignerBase = class {
|
|
|
66
46
|
this.transport = null;
|
|
67
47
|
this.solanaApp = null;
|
|
68
48
|
}
|
|
69
|
-
connect() {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
"Signing off-chain messages requires Solana Ledger App 1.8.0 or later"
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
this.solanaApp = solana;
|
|
85
|
-
} catch (error) {
|
|
86
|
-
throw new Error(`Failed to connect to Ledger device: ${error}`);
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
sign(message) {
|
|
91
|
-
return __async(this, null, function* () {
|
|
92
|
-
yield this.connect();
|
|
93
|
-
if (!this.solanaApp) {
|
|
94
|
-
throw new Error("Ledger Solana app not initialized");
|
|
95
|
-
}
|
|
96
|
-
try {
|
|
97
|
-
const result = yield this.solanaApp.signOffchainMessage(
|
|
98
|
-
this.derivationPath,
|
|
99
|
-
Buffer.from(message)
|
|
49
|
+
async connect() {
|
|
50
|
+
if (this.transport && this.solanaApp) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
this.transport = await this.loadTransport();
|
|
55
|
+
const solana = new import_hw_app_solana.default(this.transport);
|
|
56
|
+
const version = await solana.getAppConfiguration().then((r) => r.version);
|
|
57
|
+
const [major, minor, _patch] = version.split(".").map(Number);
|
|
58
|
+
if (major < 1 || major === 1 && minor < 8) {
|
|
59
|
+
throw new Error(
|
|
60
|
+
"Signing off-chain messages requires Solana Ledger App 1.8.0 or later"
|
|
100
61
|
);
|
|
101
|
-
return new Uint8Array(result.signature);
|
|
102
|
-
} catch (error) {
|
|
103
|
-
throw new Error(`Failed to sign message with Ledger: ${error}`);
|
|
104
62
|
}
|
|
105
|
-
|
|
63
|
+
this.solanaApp = solana;
|
|
64
|
+
} catch (error) {
|
|
65
|
+
throw new Error(`Failed to connect to Ledger device: ${error}`);
|
|
66
|
+
}
|
|
106
67
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
});
|
|
68
|
+
async sign(message) {
|
|
69
|
+
await this.connect();
|
|
70
|
+
if (!this.solanaApp) {
|
|
71
|
+
throw new Error("Ledger Solana app not initialized");
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
const result = await this.solanaApp.signOffchainMessage(
|
|
75
|
+
this.derivationPath,
|
|
76
|
+
Buffer.from(message)
|
|
77
|
+
);
|
|
78
|
+
return new Uint8Array(result.signature);
|
|
79
|
+
} catch (error) {
|
|
80
|
+
throw new Error(`Failed to sign message with Ledger: ${error}`);
|
|
81
|
+
}
|
|
123
82
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
83
|
+
async publicKey() {
|
|
84
|
+
await this.connect();
|
|
85
|
+
if (!this.solanaApp) {
|
|
86
|
+
throw new Error("Ledger Solana app not initialized");
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const result = await this.solanaApp.getAddress(
|
|
90
|
+
this.derivationPath,
|
|
91
|
+
false
|
|
92
|
+
);
|
|
93
|
+
return new Uint8Array(result.address);
|
|
94
|
+
} catch (error) {
|
|
95
|
+
throw new Error(`Failed to get public key from Ledger: ${error}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async disconnect() {
|
|
99
|
+
if (this.transport) {
|
|
100
|
+
await this.transport.close();
|
|
101
|
+
this.transport = null;
|
|
102
|
+
this.solanaApp = null;
|
|
103
|
+
}
|
|
132
104
|
}
|
|
133
105
|
};
|
|
134
106
|
|
|
135
107
|
// src/ledger-solana/default.ts
|
|
136
|
-
function loadBrowserTransport() {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
throw new Error("No supported Ledger transport available (WebHID or WebUSB)");
|
|
145
|
-
});
|
|
108
|
+
async function loadBrowserTransport() {
|
|
109
|
+
if (await import_hw_transport_webhid.default.isSupported()) {
|
|
110
|
+
return import_hw_transport_webhid.default.create();
|
|
111
|
+
}
|
|
112
|
+
if (await import_hw_transport_webusb.default.isSupported()) {
|
|
113
|
+
return import_hw_transport_webusb.default.create();
|
|
114
|
+
}
|
|
115
|
+
throw new Error("No supported Ledger transport available (WebHID or WebUSB)");
|
|
146
116
|
}
|
|
147
117
|
var LedgerSolanaSigner = class extends LedgerSolanaSignerBase {
|
|
148
118
|
constructor(derivationPath = "44'/501'") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ledger-solana/default.ts","../../src/ledger-solana/common.ts"],"sourcesContent":["import type Transport from \"@ledgerhq/hw-transport\";\nimport TransportWebHID from \"@ledgerhq/hw-transport-webhid\";\nimport TransportWebUSB from \"@ledgerhq/hw-transport-webusb\";\nimport { LedgerSolanaSignerBase } from \"./common\";\n\nasync function loadBrowserTransport(): Promise<Transport> {\n if (await TransportWebHID.isSupported()) {\n return TransportWebHID.create();\n }\n if (await TransportWebUSB.isSupported()) {\n return TransportWebUSB.create();\n }\n throw new Error(\"No supported Ledger transport available (WebHID or WebUSB)\");\n}\n\nexport class LedgerSolanaSigner extends LedgerSolanaSignerBase {\n constructor(derivationPath = \"44'/501'\") {\n super(loadBrowserTransport, derivationPath);\n }\n}\n","import Solana from \"@ledgerhq/hw-app-solana\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport type { Signer } from \"../signer\";\n\nexport type TransportLoader = () => Promise<Transport>;\n\nexport class LedgerSolanaSignerBase implements Signer {\n readonly __ledgerSolanaSigner = true as const;\n\n private transport: Transport | null = null;\n private solanaApp: Solana | null = null;\n\n constructor(\n private loadTransport: TransportLoader,\n private derivationPath = \"44'/501'\",\n ) {}\n\n private async connect(): Promise<void> {\n if (this.transport && this.solanaApp) {\n return;\n }\n\n try {\n this.transport = await this.loadTransport();\n\n const solana = new Solana(this.transport);\n const version = await solana.getAppConfiguration().then((r) => r.version);\n const [major, minor, _patch] = version.split(\".\").map(Number);\n if (major < 1 || (major === 1 && minor < 8)) {\n throw new Error(\n \"Signing off-chain messages requires Solana Ledger App 1.8.0 or later\",\n );\n }\n this.solanaApp = solana;\n } catch (error) {\n throw new Error(`Failed to connect to Ledger device: ${error}`);\n }\n }\n\n public async sign(message: Uint8Array): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.signOffchainMessage(\n this.derivationPath,\n Buffer.from(message),\n );\n return new Uint8Array(result.signature);\n } catch (error) {\n throw new Error(`Failed to sign message with Ledger: ${error}`);\n }\n }\n\n public async publicKey(): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.getAddress(\n this.derivationPath,\n false,\n );\n return new Uint8Array(result.address);\n } catch (error) {\n throw new Error(`Failed to get public key from Ledger: ${error}`);\n }\n }\n\n public async disconnect(): Promise<void> {\n if (this.transport) {\n await this.transport.close();\n this.transport = null;\n this.solanaApp = null;\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/ledger-solana/default.ts","../../src/ledger-solana/common.ts"],"sourcesContent":["import type Transport from \"@ledgerhq/hw-transport\";\nimport TransportWebHID from \"@ledgerhq/hw-transport-webhid\";\nimport TransportWebUSB from \"@ledgerhq/hw-transport-webusb\";\nimport { LedgerSolanaSignerBase } from \"./common\";\n\nasync function loadBrowserTransport(): Promise<Transport> {\n if (await TransportWebHID.isSupported()) {\n return TransportWebHID.create();\n }\n if (await TransportWebUSB.isSupported()) {\n return TransportWebUSB.create();\n }\n throw new Error(\"No supported Ledger transport available (WebHID or WebUSB)\");\n}\n\nexport class LedgerSolanaSigner extends LedgerSolanaSignerBase {\n constructor(derivationPath = \"44'/501'\") {\n super(loadBrowserTransport, derivationPath);\n }\n}\n","import Solana from \"@ledgerhq/hw-app-solana\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport type { Signer } from \"../signer\";\n\nexport type TransportLoader = () => Promise<Transport>;\n\nexport class LedgerSolanaSignerBase implements Signer {\n readonly __ledgerSolanaSigner = true as const;\n\n private transport: Transport | null = null;\n private solanaApp: Solana | null = null;\n\n constructor(\n private loadTransport: TransportLoader,\n private derivationPath = \"44'/501'\",\n ) {}\n\n private async connect(): Promise<void> {\n if (this.transport && this.solanaApp) {\n return;\n }\n\n try {\n this.transport = await this.loadTransport();\n\n const solana = new Solana(this.transport);\n const version = await solana.getAppConfiguration().then((r) => r.version);\n const [major, minor, _patch] = version.split(\".\").map(Number);\n if (major < 1 || (major === 1 && minor < 8)) {\n throw new Error(\n \"Signing off-chain messages requires Solana Ledger App 1.8.0 or later\",\n );\n }\n this.solanaApp = solana;\n } catch (error) {\n throw new Error(`Failed to connect to Ledger device: ${error}`);\n }\n }\n\n public async sign(message: Uint8Array): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.signOffchainMessage(\n this.derivationPath,\n Buffer.from(message),\n );\n return new Uint8Array(result.signature);\n } catch (error) {\n throw new Error(`Failed to sign message with Ledger: ${error}`);\n }\n }\n\n public async publicKey(): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.getAddress(\n this.derivationPath,\n false,\n );\n return new Uint8Array(result.address);\n } catch (error) {\n throw new Error(`Failed to get public key from Ledger: ${error}`);\n }\n }\n\n public async disconnect(): Promise<void> {\n if (this.transport) {\n await this.transport.close();\n this.transport = null;\n this.solanaApp = null;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,iCAA4B;AAC5B,iCAA4B;;;ACF5B,2BAAmB;AAMZ,IAAM,yBAAN,MAA+C;AAAA,EAMpD,YACU,eACA,iBAAiB,YACzB;AAFQ;AACA;AAPV,SAAS,uBAAuB;AAEhC,SAAQ,YAA8B;AACtC,SAAQ,YAA2B;AAAA,EAKhC;AAAA,EAEH,MAAc,UAAyB;AACrC,QAAI,KAAK,aAAa,KAAK,WAAW;AACpC;AAAA,IACF;AAEA,QAAI;AACF,WAAK,YAAY,MAAM,KAAK,cAAc;AAE1C,YAAM,SAAS,IAAI,qBAAAA,QAAO,KAAK,SAAS;AACxC,YAAM,UAAU,MAAM,OAAO,oBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AACxE,YAAM,CAAC,OAAO,OAAO,MAAM,IAAI,QAAQ,MAAM,GAAG,EAAE,IAAI,MAAM;AAC5D,UAAI,QAAQ,KAAM,UAAU,KAAK,QAAQ,GAAI;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,WAAK,YAAY;AAAA,IACnB,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,uCAAuC,KAAK,EAAE;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,MAAa,KAAK,SAA0C;AAC1D,UAAM,KAAK,QAAQ;AAEnB,QAAI,CAAC,KAAK,WAAW;AACnB,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,UAAU;AAAA,QAClC,KAAK;AAAA,QACL,OAAO,KAAK,OAAO;AAAA,MACrB;AACA,aAAO,IAAI,WAAW,OAAO,SAAS;AAAA,IACxC,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,uCAAuC,KAAK,EAAE;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,MAAa,YAAiC;AAC5C,UAAM,KAAK,QAAQ;AAEnB,QAAI,CAAC,KAAK,WAAW;AACnB,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,UAAU;AAAA,QAClC,KAAK;AAAA,QACL;AAAA,MACF;AACA,aAAO,IAAI,WAAW,OAAO,OAAO;AAAA,IACtC,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,yCAAyC,KAAK,EAAE;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,MAAa,aAA4B;AACvC,QAAI,KAAK,WAAW;AAClB,YAAM,KAAK,UAAU,MAAM;AAC3B,WAAK,YAAY;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AACF;;;AD7EA,eAAe,uBAA2C;AACxD,MAAI,MAAM,2BAAAC,QAAgB,YAAY,GAAG;AACvC,WAAO,2BAAAA,QAAgB,OAAO;AAAA,EAChC;AACA,MAAI,MAAM,2BAAAC,QAAgB,YAAY,GAAG;AACvC,WAAO,2BAAAA,QAAgB,OAAO;AAAA,EAChC;AACA,QAAM,IAAI,MAAM,4DAA4D;AAC9E;AAEO,IAAM,qBAAN,cAAiC,uBAAuB;AAAA,EAC7D,YAAY,iBAAiB,YAAY;AACvC,UAAM,sBAAsB,cAAc;AAAA,EAC5C;AACF;","names":["Solana","TransportWebHID","TransportWebUSB"]}
|
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
var __async = (__this, __arguments, generator) => {
|
|
2
|
-
return new Promise((resolve, reject) => {
|
|
3
|
-
var fulfilled = (value) => {
|
|
4
|
-
try {
|
|
5
|
-
step(generator.next(value));
|
|
6
|
-
} catch (e) {
|
|
7
|
-
reject(e);
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
var rejected = (value) => {
|
|
11
|
-
try {
|
|
12
|
-
step(generator.throw(value));
|
|
13
|
-
} catch (e) {
|
|
14
|
-
reject(e);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
|
|
22
1
|
// src/ledger-solana/default.ts
|
|
23
2
|
import TransportWebHID from "@ledgerhq/hw-transport-webhid";
|
|
24
3
|
import TransportWebUSB from "@ledgerhq/hw-transport-webusb";
|
|
@@ -33,83 +12,73 @@ var LedgerSolanaSignerBase = class {
|
|
|
33
12
|
this.transport = null;
|
|
34
13
|
this.solanaApp = null;
|
|
35
14
|
}
|
|
36
|
-
connect() {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"Signing off-chain messages requires Solana Ledger App 1.8.0 or later"
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
this.solanaApp = solana;
|
|
52
|
-
} catch (error) {
|
|
53
|
-
throw new Error(`Failed to connect to Ledger device: ${error}`);
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
sign(message) {
|
|
58
|
-
return __async(this, null, function* () {
|
|
59
|
-
yield this.connect();
|
|
60
|
-
if (!this.solanaApp) {
|
|
61
|
-
throw new Error("Ledger Solana app not initialized");
|
|
62
|
-
}
|
|
63
|
-
try {
|
|
64
|
-
const result = yield this.solanaApp.signOffchainMessage(
|
|
65
|
-
this.derivationPath,
|
|
66
|
-
Buffer.from(message)
|
|
15
|
+
async connect() {
|
|
16
|
+
if (this.transport && this.solanaApp) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
this.transport = await this.loadTransport();
|
|
21
|
+
const solana = new Solana(this.transport);
|
|
22
|
+
const version = await solana.getAppConfiguration().then((r) => r.version);
|
|
23
|
+
const [major, minor, _patch] = version.split(".").map(Number);
|
|
24
|
+
if (major < 1 || major === 1 && minor < 8) {
|
|
25
|
+
throw new Error(
|
|
26
|
+
"Signing off-chain messages requires Solana Ledger App 1.8.0 or later"
|
|
67
27
|
);
|
|
68
|
-
return new Uint8Array(result.signature);
|
|
69
|
-
} catch (error) {
|
|
70
|
-
throw new Error(`Failed to sign message with Ledger: ${error}`);
|
|
71
28
|
}
|
|
72
|
-
|
|
29
|
+
this.solanaApp = solana;
|
|
30
|
+
} catch (error) {
|
|
31
|
+
throw new Error(`Failed to connect to Ledger device: ${error}`);
|
|
32
|
+
}
|
|
73
33
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
});
|
|
34
|
+
async sign(message) {
|
|
35
|
+
await this.connect();
|
|
36
|
+
if (!this.solanaApp) {
|
|
37
|
+
throw new Error("Ledger Solana app not initialized");
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const result = await this.solanaApp.signOffchainMessage(
|
|
41
|
+
this.derivationPath,
|
|
42
|
+
Buffer.from(message)
|
|
43
|
+
);
|
|
44
|
+
return new Uint8Array(result.signature);
|
|
45
|
+
} catch (error) {
|
|
46
|
+
throw new Error(`Failed to sign message with Ledger: ${error}`);
|
|
47
|
+
}
|
|
90
48
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
49
|
+
async publicKey() {
|
|
50
|
+
await this.connect();
|
|
51
|
+
if (!this.solanaApp) {
|
|
52
|
+
throw new Error("Ledger Solana app not initialized");
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const result = await this.solanaApp.getAddress(
|
|
56
|
+
this.derivationPath,
|
|
57
|
+
false
|
|
58
|
+
);
|
|
59
|
+
return new Uint8Array(result.address);
|
|
60
|
+
} catch (error) {
|
|
61
|
+
throw new Error(`Failed to get public key from Ledger: ${error}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async disconnect() {
|
|
65
|
+
if (this.transport) {
|
|
66
|
+
await this.transport.close();
|
|
67
|
+
this.transport = null;
|
|
68
|
+
this.solanaApp = null;
|
|
69
|
+
}
|
|
99
70
|
}
|
|
100
71
|
};
|
|
101
72
|
|
|
102
73
|
// src/ledger-solana/default.ts
|
|
103
|
-
function loadBrowserTransport() {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
throw new Error("No supported Ledger transport available (WebHID or WebUSB)");
|
|
112
|
-
});
|
|
74
|
+
async function loadBrowserTransport() {
|
|
75
|
+
if (await TransportWebHID.isSupported()) {
|
|
76
|
+
return TransportWebHID.create();
|
|
77
|
+
}
|
|
78
|
+
if (await TransportWebUSB.isSupported()) {
|
|
79
|
+
return TransportWebUSB.create();
|
|
80
|
+
}
|
|
81
|
+
throw new Error("No supported Ledger transport available (WebHID or WebUSB)");
|
|
113
82
|
}
|
|
114
83
|
var LedgerSolanaSigner = class extends LedgerSolanaSignerBase {
|
|
115
84
|
constructor(derivationPath = "44'/501'") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ledger-solana/default.ts","../../src/ledger-solana/common.ts"],"sourcesContent":["import type Transport from \"@ledgerhq/hw-transport\";\nimport TransportWebHID from \"@ledgerhq/hw-transport-webhid\";\nimport TransportWebUSB from \"@ledgerhq/hw-transport-webusb\";\nimport { LedgerSolanaSignerBase } from \"./common\";\n\nasync function loadBrowserTransport(): Promise<Transport> {\n if (await TransportWebHID.isSupported()) {\n return TransportWebHID.create();\n }\n if (await TransportWebUSB.isSupported()) {\n return TransportWebUSB.create();\n }\n throw new Error(\"No supported Ledger transport available (WebHID or WebUSB)\");\n}\n\nexport class LedgerSolanaSigner extends LedgerSolanaSignerBase {\n constructor(derivationPath = \"44'/501'\") {\n super(loadBrowserTransport, derivationPath);\n }\n}\n","import Solana from \"@ledgerhq/hw-app-solana\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport type { Signer } from \"../signer\";\n\nexport type TransportLoader = () => Promise<Transport>;\n\nexport class LedgerSolanaSignerBase implements Signer {\n readonly __ledgerSolanaSigner = true as const;\n\n private transport: Transport | null = null;\n private solanaApp: Solana | null = null;\n\n constructor(\n private loadTransport: TransportLoader,\n private derivationPath = \"44'/501'\",\n ) {}\n\n private async connect(): Promise<void> {\n if (this.transport && this.solanaApp) {\n return;\n }\n\n try {\n this.transport = await this.loadTransport();\n\n const solana = new Solana(this.transport);\n const version = await solana.getAppConfiguration().then((r) => r.version);\n const [major, minor, _patch] = version.split(\".\").map(Number);\n if (major < 1 || (major === 1 && minor < 8)) {\n throw new Error(\n \"Signing off-chain messages requires Solana Ledger App 1.8.0 or later\",\n );\n }\n this.solanaApp = solana;\n } catch (error) {\n throw new Error(`Failed to connect to Ledger device: ${error}`);\n }\n }\n\n public async sign(message: Uint8Array): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.signOffchainMessage(\n this.derivationPath,\n Buffer.from(message),\n );\n return new Uint8Array(result.signature);\n } catch (error) {\n throw new Error(`Failed to sign message with Ledger: ${error}`);\n }\n }\n\n public async publicKey(): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.getAddress(\n this.derivationPath,\n false,\n );\n return new Uint8Array(result.address);\n } catch (error) {\n throw new Error(`Failed to get public key from Ledger: ${error}`);\n }\n }\n\n public async disconnect(): Promise<void> {\n if (this.transport) {\n await this.transport.close();\n this.transport = null;\n this.solanaApp = null;\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/ledger-solana/default.ts","../../src/ledger-solana/common.ts"],"sourcesContent":["import type Transport from \"@ledgerhq/hw-transport\";\nimport TransportWebHID from \"@ledgerhq/hw-transport-webhid\";\nimport TransportWebUSB from \"@ledgerhq/hw-transport-webusb\";\nimport { LedgerSolanaSignerBase } from \"./common\";\n\nasync function loadBrowserTransport(): Promise<Transport> {\n if (await TransportWebHID.isSupported()) {\n return TransportWebHID.create();\n }\n if (await TransportWebUSB.isSupported()) {\n return TransportWebUSB.create();\n }\n throw new Error(\"No supported Ledger transport available (WebHID or WebUSB)\");\n}\n\nexport class LedgerSolanaSigner extends LedgerSolanaSignerBase {\n constructor(derivationPath = \"44'/501'\") {\n super(loadBrowserTransport, derivationPath);\n }\n}\n","import Solana from \"@ledgerhq/hw-app-solana\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport type { Signer } from \"../signer\";\n\nexport type TransportLoader = () => Promise<Transport>;\n\nexport class LedgerSolanaSignerBase implements Signer {\n readonly __ledgerSolanaSigner = true as const;\n\n private transport: Transport | null = null;\n private solanaApp: Solana | null = null;\n\n constructor(\n private loadTransport: TransportLoader,\n private derivationPath = \"44'/501'\",\n ) {}\n\n private async connect(): Promise<void> {\n if (this.transport && this.solanaApp) {\n return;\n }\n\n try {\n this.transport = await this.loadTransport();\n\n const solana = new Solana(this.transport);\n const version = await solana.getAppConfiguration().then((r) => r.version);\n const [major, minor, _patch] = version.split(\".\").map(Number);\n if (major < 1 || (major === 1 && minor < 8)) {\n throw new Error(\n \"Signing off-chain messages requires Solana Ledger App 1.8.0 or later\",\n );\n }\n this.solanaApp = solana;\n } catch (error) {\n throw new Error(`Failed to connect to Ledger device: ${error}`);\n }\n }\n\n public async sign(message: Uint8Array): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.signOffchainMessage(\n this.derivationPath,\n Buffer.from(message),\n );\n return new Uint8Array(result.signature);\n } catch (error) {\n throw new Error(`Failed to sign message with Ledger: ${error}`);\n }\n }\n\n public async publicKey(): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.getAddress(\n this.derivationPath,\n false,\n );\n return new Uint8Array(result.address);\n } catch (error) {\n throw new Error(`Failed to get public key from Ledger: ${error}`);\n }\n }\n\n public async disconnect(): Promise<void> {\n if (this.transport) {\n await this.transport.close();\n this.transport = null;\n this.solanaApp = null;\n }\n }\n}\n"],"mappings":";AACA,OAAO,qBAAqB;AAC5B,OAAO,qBAAqB;;;ACF5B,OAAO,YAAY;AAMZ,IAAM,yBAAN,MAA+C;AAAA,EAMpD,YACU,eACA,iBAAiB,YACzB;AAFQ;AACA;AAPV,SAAS,uBAAuB;AAEhC,SAAQ,YAA8B;AACtC,SAAQ,YAA2B;AAAA,EAKhC;AAAA,EAEH,MAAc,UAAyB;AACrC,QAAI,KAAK,aAAa,KAAK,WAAW;AACpC;AAAA,IACF;AAEA,QAAI;AACF,WAAK,YAAY,MAAM,KAAK,cAAc;AAE1C,YAAM,SAAS,IAAI,OAAO,KAAK,SAAS;AACxC,YAAM,UAAU,MAAM,OAAO,oBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AACxE,YAAM,CAAC,OAAO,OAAO,MAAM,IAAI,QAAQ,MAAM,GAAG,EAAE,IAAI,MAAM;AAC5D,UAAI,QAAQ,KAAM,UAAU,KAAK,QAAQ,GAAI;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,WAAK,YAAY;AAAA,IACnB,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,uCAAuC,KAAK,EAAE;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,MAAa,KAAK,SAA0C;AAC1D,UAAM,KAAK,QAAQ;AAEnB,QAAI,CAAC,KAAK,WAAW;AACnB,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,UAAU;AAAA,QAClC,KAAK;AAAA,QACL,OAAO,KAAK,OAAO;AAAA,MACrB;AACA,aAAO,IAAI,WAAW,OAAO,SAAS;AAAA,IACxC,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,uCAAuC,KAAK,EAAE;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,MAAa,YAAiC;AAC5C,UAAM,KAAK,QAAQ;AAEnB,QAAI,CAAC,KAAK,WAAW;AACnB,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,UAAU;AAAA,QAClC,KAAK;AAAA,QACL;AAAA,MACF;AACA,aAAO,IAAI,WAAW,OAAO,OAAO;AAAA,IACtC,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,yCAAyC,KAAK,EAAE;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,MAAa,aAA4B;AACvC,QAAI,KAAK,WAAW;AAClB,YAAM,KAAK,UAAU,MAAM;AAC3B,WAAK,YAAY;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AACF;;;AD7EA,eAAe,uBAA2C;AACxD,MAAI,MAAM,gBAAgB,YAAY,GAAG;AACvC,WAAO,gBAAgB,OAAO;AAAA,EAChC;AACA,MAAI,MAAM,gBAAgB,YAAY,GAAG;AACvC,WAAO,gBAAgB,OAAO;AAAA,EAChC;AACA,QAAM,IAAI,MAAM,4DAA4D;AAC9E;AAEO,IAAM,qBAAN,cAAiC,uBAAuB;AAAA,EAC7D,YAAY,iBAAiB,YAAY;AACvC,UAAM,sBAAsB,cAAc;AAAA,EAC5C;AACF;","names":[]}
|
|
@@ -26,26 +26,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var __async = (__this, __arguments, generator) => {
|
|
30
|
-
return new Promise((resolve, reject) => {
|
|
31
|
-
var fulfilled = (value) => {
|
|
32
|
-
try {
|
|
33
|
-
step(generator.next(value));
|
|
34
|
-
} catch (e) {
|
|
35
|
-
reject(e);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var rejected = (value) => {
|
|
39
|
-
try {
|
|
40
|
-
step(generator.throw(value));
|
|
41
|
-
} catch (e) {
|
|
42
|
-
reject(e);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
46
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
29
|
|
|
50
30
|
// src/ledger-solana/node.ts
|
|
51
31
|
var node_exports = {};
|
|
@@ -65,83 +45,73 @@ var LedgerSolanaSignerBase = class {
|
|
|
65
45
|
this.transport = null;
|
|
66
46
|
this.solanaApp = null;
|
|
67
47
|
}
|
|
68
|
-
connect() {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
"Signing off-chain messages requires Solana Ledger App 1.8.0 or later"
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
this.solanaApp = solana;
|
|
84
|
-
} catch (error) {
|
|
85
|
-
throw new Error(`Failed to connect to Ledger device: ${error}`);
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
sign(message) {
|
|
90
|
-
return __async(this, null, function* () {
|
|
91
|
-
yield this.connect();
|
|
92
|
-
if (!this.solanaApp) {
|
|
93
|
-
throw new Error("Ledger Solana app not initialized");
|
|
94
|
-
}
|
|
95
|
-
try {
|
|
96
|
-
const result = yield this.solanaApp.signOffchainMessage(
|
|
97
|
-
this.derivationPath,
|
|
98
|
-
Buffer.from(message)
|
|
48
|
+
async connect() {
|
|
49
|
+
if (this.transport && this.solanaApp) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
this.transport = await this.loadTransport();
|
|
54
|
+
const solana = new import_hw_app_solana.default(this.transport);
|
|
55
|
+
const version = await solana.getAppConfiguration().then((r) => r.version);
|
|
56
|
+
const [major, minor, _patch] = version.split(".").map(Number);
|
|
57
|
+
if (major < 1 || major === 1 && minor < 8) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
"Signing off-chain messages requires Solana Ledger App 1.8.0 or later"
|
|
99
60
|
);
|
|
100
|
-
return new Uint8Array(result.signature);
|
|
101
|
-
} catch (error) {
|
|
102
|
-
throw new Error(`Failed to sign message with Ledger: ${error}`);
|
|
103
61
|
}
|
|
104
|
-
|
|
62
|
+
this.solanaApp = solana;
|
|
63
|
+
} catch (error) {
|
|
64
|
+
throw new Error(`Failed to connect to Ledger device: ${error}`);
|
|
65
|
+
}
|
|
105
66
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
121
|
-
});
|
|
67
|
+
async sign(message) {
|
|
68
|
+
await this.connect();
|
|
69
|
+
if (!this.solanaApp) {
|
|
70
|
+
throw new Error("Ledger Solana app not initialized");
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const result = await this.solanaApp.signOffchainMessage(
|
|
74
|
+
this.derivationPath,
|
|
75
|
+
Buffer.from(message)
|
|
76
|
+
);
|
|
77
|
+
return new Uint8Array(result.signature);
|
|
78
|
+
} catch (error) {
|
|
79
|
+
throw new Error(`Failed to sign message with Ledger: ${error}`);
|
|
80
|
+
}
|
|
122
81
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
82
|
+
async publicKey() {
|
|
83
|
+
await this.connect();
|
|
84
|
+
if (!this.solanaApp) {
|
|
85
|
+
throw new Error("Ledger Solana app not initialized");
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
const result = await this.solanaApp.getAddress(
|
|
89
|
+
this.derivationPath,
|
|
90
|
+
false
|
|
91
|
+
);
|
|
92
|
+
return new Uint8Array(result.address);
|
|
93
|
+
} catch (error) {
|
|
94
|
+
throw new Error(`Failed to get public key from Ledger: ${error}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async disconnect() {
|
|
98
|
+
if (this.transport) {
|
|
99
|
+
await this.transport.close();
|
|
100
|
+
this.transport = null;
|
|
101
|
+
this.solanaApp = null;
|
|
102
|
+
}
|
|
131
103
|
}
|
|
132
104
|
};
|
|
133
105
|
|
|
134
106
|
// src/ledger-solana/node.ts
|
|
135
|
-
function loadNodeTransport() {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
});
|
|
107
|
+
async function loadNodeTransport() {
|
|
108
|
+
try {
|
|
109
|
+
return await import_hw_transport_node_hid.default.create();
|
|
110
|
+
} catch (error) {
|
|
111
|
+
throw new Error(
|
|
112
|
+
`Failed to connect via Node HID transport. Make sure your Ledger is connected. Error: ${error}`
|
|
113
|
+
);
|
|
114
|
+
}
|
|
145
115
|
}
|
|
146
116
|
var LedgerSolanaSigner = class extends LedgerSolanaSignerBase {
|
|
147
117
|
constructor(derivationPath = "44'/501'") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ledger-solana/node.ts","../../src/ledger-solana/common.ts"],"sourcesContent":["import type Transport from \"@ledgerhq/hw-transport\";\nimport TransportNodeHid from \"@ledgerhq/hw-transport-node-hid\";\nimport { LedgerSolanaSignerBase } from \"./common\";\n\nasync function loadNodeTransport(): Promise<Transport> {\n try {\n return await TransportNodeHid.create();\n } catch (error) {\n throw new Error(\n `Failed to connect via Node HID transport. Make sure your Ledger is connected. Error: ${error}`,\n );\n }\n}\n\nexport class LedgerSolanaSigner extends LedgerSolanaSignerBase {\n constructor(derivationPath = \"44'/501'\") {\n super(loadNodeTransport, derivationPath);\n }\n}\n","import Solana from \"@ledgerhq/hw-app-solana\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport type { Signer } from \"../signer\";\n\nexport type TransportLoader = () => Promise<Transport>;\n\nexport class LedgerSolanaSignerBase implements Signer {\n readonly __ledgerSolanaSigner = true as const;\n\n private transport: Transport | null = null;\n private solanaApp: Solana | null = null;\n\n constructor(\n private loadTransport: TransportLoader,\n private derivationPath = \"44'/501'\",\n ) {}\n\n private async connect(): Promise<void> {\n if (this.transport && this.solanaApp) {\n return;\n }\n\n try {\n this.transport = await this.loadTransport();\n\n const solana = new Solana(this.transport);\n const version = await solana.getAppConfiguration().then((r) => r.version);\n const [major, minor, _patch] = version.split(\".\").map(Number);\n if (major < 1 || (major === 1 && minor < 8)) {\n throw new Error(\n \"Signing off-chain messages requires Solana Ledger App 1.8.0 or later\",\n );\n }\n this.solanaApp = solana;\n } catch (error) {\n throw new Error(`Failed to connect to Ledger device: ${error}`);\n }\n }\n\n public async sign(message: Uint8Array): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.signOffchainMessage(\n this.derivationPath,\n Buffer.from(message),\n );\n return new Uint8Array(result.signature);\n } catch (error) {\n throw new Error(`Failed to sign message with Ledger: ${error}`);\n }\n }\n\n public async publicKey(): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.getAddress(\n this.derivationPath,\n false,\n );\n return new Uint8Array(result.address);\n } catch (error) {\n throw new Error(`Failed to get public key from Ledger: ${error}`);\n }\n }\n\n public async disconnect(): Promise<void> {\n if (this.transport) {\n await this.transport.close();\n this.transport = null;\n this.solanaApp = null;\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/ledger-solana/node.ts","../../src/ledger-solana/common.ts"],"sourcesContent":["import type Transport from \"@ledgerhq/hw-transport\";\nimport TransportNodeHid from \"@ledgerhq/hw-transport-node-hid\";\nimport { LedgerSolanaSignerBase } from \"./common\";\n\nasync function loadNodeTransport(): Promise<Transport> {\n try {\n return await TransportNodeHid.create();\n } catch (error) {\n throw new Error(\n `Failed to connect via Node HID transport. Make sure your Ledger is connected. Error: ${error}`,\n );\n }\n}\n\nexport class LedgerSolanaSigner extends LedgerSolanaSignerBase {\n constructor(derivationPath = \"44'/501'\") {\n super(loadNodeTransport, derivationPath);\n }\n}\n","import Solana from \"@ledgerhq/hw-app-solana\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport type { Signer } from \"../signer\";\n\nexport type TransportLoader = () => Promise<Transport>;\n\nexport class LedgerSolanaSignerBase implements Signer {\n readonly __ledgerSolanaSigner = true as const;\n\n private transport: Transport | null = null;\n private solanaApp: Solana | null = null;\n\n constructor(\n private loadTransport: TransportLoader,\n private derivationPath = \"44'/501'\",\n ) {}\n\n private async connect(): Promise<void> {\n if (this.transport && this.solanaApp) {\n return;\n }\n\n try {\n this.transport = await this.loadTransport();\n\n const solana = new Solana(this.transport);\n const version = await solana.getAppConfiguration().then((r) => r.version);\n const [major, minor, _patch] = version.split(\".\").map(Number);\n if (major < 1 || (major === 1 && minor < 8)) {\n throw new Error(\n \"Signing off-chain messages requires Solana Ledger App 1.8.0 or later\",\n );\n }\n this.solanaApp = solana;\n } catch (error) {\n throw new Error(`Failed to connect to Ledger device: ${error}`);\n }\n }\n\n public async sign(message: Uint8Array): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.signOffchainMessage(\n this.derivationPath,\n Buffer.from(message),\n );\n return new Uint8Array(result.signature);\n } catch (error) {\n throw new Error(`Failed to sign message with Ledger: ${error}`);\n }\n }\n\n public async publicKey(): Promise<Uint8Array> {\n await this.connect();\n\n if (!this.solanaApp) {\n throw new Error(\"Ledger Solana app not initialized\");\n }\n\n try {\n const result = await this.solanaApp.getAddress(\n this.derivationPath,\n false,\n );\n return new Uint8Array(result.address);\n } catch (error) {\n throw new Error(`Failed to get public key from Ledger: ${error}`);\n }\n }\n\n public async disconnect(): Promise<void> {\n if (this.transport) {\n await this.transport.close();\n this.transport = null;\n this.solanaApp = null;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mCAA6B;;;ACD7B,2BAAmB;AAMZ,IAAM,yBAAN,MAA+C;AAAA,EAMpD,YACU,eACA,iBAAiB,YACzB;AAFQ;AACA;AAPV,SAAS,uBAAuB;AAEhC,SAAQ,YAA8B;AACtC,SAAQ,YAA2B;AAAA,EAKhC;AAAA,EAEH,MAAc,UAAyB;AACrC,QAAI,KAAK,aAAa,KAAK,WAAW;AACpC;AAAA,IACF;AAEA,QAAI;AACF,WAAK,YAAY,MAAM,KAAK,cAAc;AAE1C,YAAM,SAAS,IAAI,qBAAAA,QAAO,KAAK,SAAS;AACxC,YAAM,UAAU,MAAM,OAAO,oBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AACxE,YAAM,CAAC,OAAO,OAAO,MAAM,IAAI,QAAQ,MAAM,GAAG,EAAE,IAAI,MAAM;AAC5D,UAAI,QAAQ,KAAM,UAAU,KAAK,QAAQ,GAAI;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,WAAK,YAAY;AAAA,IACnB,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,uCAAuC,KAAK,EAAE;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,MAAa,KAAK,SAA0C;AAC1D,UAAM,KAAK,QAAQ;AAEnB,QAAI,CAAC,KAAK,WAAW;AACnB,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,UAAU;AAAA,QAClC,KAAK;AAAA,QACL,OAAO,KAAK,OAAO;AAAA,MACrB;AACA,aAAO,IAAI,WAAW,OAAO,SAAS;AAAA,IACxC,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,uCAAuC,KAAK,EAAE;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,MAAa,YAAiC;AAC5C,UAAM,KAAK,QAAQ;AAEnB,QAAI,CAAC,KAAK,WAAW;AACnB,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,UAAU;AAAA,QAClC,KAAK;AAAA,QACL;AAAA,MACF;AACA,aAAO,IAAI,WAAW,OAAO,OAAO;AAAA,IACtC,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,yCAAyC,KAAK,EAAE;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,MAAa,aAA4B;AACvC,QAAI,KAAK,WAAW;AAClB,YAAM,KAAK,UAAU,MAAM;AAC3B,WAAK,YAAY;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AACF;;;AD9EA,eAAe,oBAAwC;AACrD,MAAI;AACF,WAAO,MAAM,6BAAAC,QAAiB,OAAO;AAAA,EACvC,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR,wFAAwF,KAAK;AAAA,IAC/F;AAAA,EACF;AACF;AAEO,IAAM,qBAAN,cAAiC,uBAAuB;AAAA,EAC7D,YAAY,iBAAiB,YAAY;AACvC,UAAM,mBAAmB,cAAc;AAAA,EACzC;AACF;","names":["Solana","TransportNodeHid"]}
|