001package org.consensusj.bitcoinj.signing; 002 003import org.bitcoinj.core.Transaction; 004import org.bitcoinj.wallet.DeterministicKeyChain; 005 006import java.util.concurrent.CompletableFuture; 007 008/** 009 * A low-level transaction signing interface that can sign a {@link SigningRequest} that is a complete 010 * transaction that only needs signatures. The {@link HDKeychainSigner} implementation can sign transactions 011 * using a <b>bitcoinj</b> {@link DeterministicKeyChain}. 012 */ 013public interface TransactionSigner { 014 /** 015 * Create a signed bitcoinj transaction from the signing request. This is asynchronous because 016 * user (or other) confirmation may be required. 017 * @param request Signing request with data for all inputs and all outputs 018 * @return A signed transaction (should be treated as immutable) 019 */ 020 CompletableFuture<Transaction> signTransaction(SigningRequest request); 021}