@tronlink/core
Version:
The library serves as a core module within TronLink Extension, which provides low-level wallet functionality for both Tron and Ethereum networks, primary features includes account generation and transaction signing
47 lines (39 loc) • 1.23 kB
text/typescript
import AppTrx from '@ledgerhq/hw-app-trx';
import Transport from '@ledgerhq/hw-transport';
import TransportWebHID from '@ledgerhq/hw-transport-webhid';
import { LedgerWebHid } from '../../base_wallet/ledger';
import { TronWallet } from '../TronWallet';
export class LedgerTrxWebHid extends LedgerWebHid {
_transport?: Transport;
_app?: AppTrx;
getWallet(): TronWallet {
return new TronWallet();
}
async signTransaction(transaction: any, path: string) {
try {
const app = await this.makeApp();
const response = await app.signTransaction(path, transaction.hex, transaction.info);
return response;
} finally {
await this.cleanUp();
}
}
async signTransactionHash(path: string, rawTxHashHex: string) {
try {
const app = await this.makeApp();
const response = await app.signTransactionHash(path, rawTxHashHex);
return response;
} finally {
await this.cleanUp();
}
}
protected async makeApp(): Promise<AppTrx> {
this._transport = await TransportWebHID.create();
this._app = new AppTrx(this._transport);
return this._app;
}
protected async cleanUp() {
this._app = undefined;
await this._transport?.close();
}
}