import EthTx from 'ethereumjs-tx'; import { IFullWallet } from '../IWallet'; import { DeterministicWallet } from './deterministic'; export interface ChainCodeResponse { chainCode: string; publicKey: string; } export abstract class HardwareWallet extends DeterministicWallet implements IFullWallet { // Static functions can't be abstract, so implement an errorous one // @ts-ignore public static getChainCode(dpath: string): Promise { throw new Error(`getChainCode is not implemented in ${this.constructor.name}`); } public abstract signRawTransaction(t: EthTx): Promise; public abstract signMessage(msg: string): Promise; public abstract displayAddress(): Promise; public abstract getWalletType(): string; }