import HDPrivateKeyManager, { WalletConstructorParams } from "./HDPrivateKey";
import Blockchain from "./Blockchain";
import { BlockchainCache } from ".";

declare class PeerToPeerWallet extends HDPrivateKeyManager {
  private index;
  blockchain: Blockchain;
  cache: BlockchainCache;
  constructor({
    key,
    keyFormat,
    language,
    network,
    ...options
  }: WalletConstructorParams);
  sync(): void;

  createWallet(): any;
  initIndexedDb(idb: string): boolean;

  getBalance(walletAddress: string): number;
  sendBitcoin(senderWallet: string, receiverWallet: string, sendBitcoinQuantity: number): any;
  decodeAllTransactions(wallet: string): any;
  getExistingTransactions(receiverWallet: string): any;

  getAllDataIndexedDb(
    receiverWallet: string
  ): any;
  
  //Exposed only for testing
  addItemToDb(itemObj: object): any;
}
export default PeerToPeerWallet;
