You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

95 lines
1.6 KiB

import { BitcoinUnit } from '../models/bitcoinUnits';
export class AbstractWallet {
constructor() {
this.type = 'abstract';
this.label = '';
this.secret = ''; // private key or recovery phrase
this.balance = 0;
this.unconfirmed_balance = 0;
this.transactions = [];
this._address = false; // cache
this.utxo = [];
this._lastTxFetch = 0;
this._lastBalanceFetch = 0;
this.preferredBalanceUnit = BitcoinUnit.BTC;
}
getTransactions() {
return this.transactions;
}
getTypeReadable() {
return this.type;
}
/**
*
* @returns {string}
*/
getLabel() {
return this.label;
}
getBalance() {
return this.balance;
}
getPreferredBalanceUnit() {
return this.preferredBalanceUnit || BitcoinUnit.BTC;
}
allowReceive() {
return true;
}
allowSend() {
return true;
}
allowRBF() {
return false;
}
/**
* Returns delta of unconfirmed balance. For example, if theres no
* unconfirmed balance its 0
*
* @return {number}
*/
getUnconfirmedBalance() {
return this.unconfirmed_balance;
}
setLabel(newLabel) {
this.label = newLabel;
return this;
}
getSecret() {
return this.secret;
}
setSecret(newSecret) {
this.secret = newSecret.trim();
return this;
}
getLatestTransactionTime() {
return 0;
}
static fromJson(obj) {
let obj2 = JSON.parse(obj);
let temp = new this();
for (let key2 of Object.keys(obj2)) {
temp[key2] = obj2[key2];
}
return temp;
}
getAddress() {}
// createTx () { throw Error('not implemented') }
}