UNPKG

@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 (34 loc) 1.35 kB
// @ts-ignore import bip39 from 'bip39'; import type { DerivePathParams, DerivePrivateKeyParams, GetAddressParams, SignParams, ValidateAddressParams, } from './types'; import { isPositiveInteger } from '../utils'; import { InvalidParameterError } from './error'; import { CoinType } from './constants'; export abstract class BaseWallet { static generateRandomMnemonic(): string { return bip39.generateMnemonic(128); } static validateMnemonic(mnemonic: string): boolean { return bip39.validateMnemonic(mnemonic); } protected abstract getCoinType(): CoinType; derivePath(params: DerivePathParams = { accountIndex: 0, addressIndex: 0 }): string { if (!isPositiveInteger(params.accountIndex) || !isPositiveInteger(params.addressIndex)) { throw new InvalidParameterError(); } return `m/44'/${this.getCoinType()}'/${params.accountIndex}'/0/${params.addressIndex}`; } abstract derivePrivateKey(params: DerivePrivateKeyParams): string; abstract getAddressBy(params: GetAddressParams): string; abstract validateAddress(params: ValidateAddressParams): boolean; abstract sign(params: SignParams): Promise<any>; abstract signMessage(params: SignParams): Promise<any>; abstract signTransaction(params: SignParams): Promise<any>; abstract signTypedData(params: SignParams): Promise<string>; }