A JavaScript library for interacting with Qubic Ledger hardware wallets using the @ledgerhq/hw-transport
package.
npm install qubic-hw-app
Before using the hw-app-qubic
package, your application must set up its own HID transport to communicate with a Ledger hardware wallet. To install the @ledgerhq/hw-transport
package, run:
npm install @ledgerhq/hw-transport
This package relies on @qubic-lib/qubic-ts-library
and expects usage of this library to construct transactions. To install the package, run:
npm install @qubic-lib/qubic-ts-library
import Transport from "@ledgerhq/hw-transport-node-hid";
import { HWAppQubic } from "hw-app-qubic";
async function main() {
const transport = await Transport.create();
const hwAppQubic = new HWAppQubic(transport);
const version = await hwAppQubic.getVersion();
console.log("Ledger App Version:", version);
const publicKey = await hwAppQubic.getPublicKey();
console.log("Public Key:", publicKey.toString("hex"));
}
main().catch(console.error);
import Transport from "@ledgerhq/hw-transport-node-hid";
import { HWAppQubic } from "hw-app-qubic";
import { QubicTransaction } from "@qubic-lib/qubic-ts-library";
async function main() {
const transport = await Transport.create();
const hwAppQubic = new HWAppQubic(transport);
const transaction = new QubicTransaction({
sourcePublicKey: "sourcePublicKey",
destinationPublicKey: "destinationPublicKey",
amount: 1000,
tick: 123456,
inputType: 1,
inputSize: 1,
});
const signedTransaction = await hwAppQubic.signTransaction(transaction);
console.log("Signed Transaction:", signedTransaction);
}
main().catch(console.error);
Creates an instance of HWAppQubic
with the given transport.
Retrieves the installed Qubic Ledger app version.
Retrieves the public key for the given derivation path. If withConfirm
is true
, the user must confirm on the device.
derivationPath
: The BIP32 derivation path (default:m/44'/1'/0'/0/0
).withConfirm
: Whether user confirmation is required (default:false
).
Signs a Qubic transaction.
interface ISignTransactionReturn {
signature: Buffer<ArrayBufferLike>;
transaction: Uint8Array<ArrayBufferLike>;
signedData: Uint8Array<ArrayBuffer>; // Transaction + signature
}
Sends a command to the Ledger device.
params
: The parameters for the command, includinginstruction
,p1
,p2
, andpayload
.
Before publishing, ensure that the project is built locally.
-
Build the project
This will generate thelib
andlib-es
directories.pnpm build
-
Login with npm credentials
If you haven't logged in yet, authenticate using your npm account credentials.npm adduser
-
Publish the package
Publish the package to npm with public access.npm publish --access public