import { UnsignedTransaction } from '@ethersproject/transactions' ; interface IBaseWallet { isReadOnly ? : boolean ; getAddress ( ) : string ; getPrivateKeyString ? ( ) : string ; } export interface IReadOnlyWallet extends IBaseWallet { isReadOnly : true ; } export interface IFullWallet extends IBaseWallet { isReadOnly ? : false ; signRawTransaction ( tx ) : Promise < Buffer > | Buffer ; signMessage ( msg ) : Promise < string > | string ; } export type IWallet = IReadOnlyWallet | IFullWallet ;