<?php namespace BitWasp\Bitcoin\Transaction\Factory; use BitWasp\Bitcoin\Crypto\EcAdapter\Key\PrivateKeyInterface; use BitWasp\Bitcoin\Crypto\EcAdapter\Key\PublicKeyInterface; use BitWasp\Bitcoin\Script\Classifier\OutputData; use BitWasp\Bitcoin\Signature\TransactionSignatureInterface; use BitWasp\Bitcoin\Transaction\SignatureHash\SigHash; use BitWasp\Buffertools\BufferInterface; interface InputSignerInterface { /** * @return InputSigner */ public function extract(); /** * Calculates the signature hash for the input for the given $sigHashType. * * @param int $sigHashType * @return BufferInterface */ public function getSigHash($sigHashType); /** * Returns whether all required signatures have been provided. * * @return bool */ public function isFullySigned(); /** * Returns the required number of signatures for this input. * * @return int */ public function getRequiredSigs(); /** * Returns an array where the values are either null, * or a TransactionSignatureInterface. * * @return TransactionSignatureInterface[] */ public function getSignatures(); /** * Returns an array where the values are either null, * or a PublicKeyInterface. * * @return PublicKeyInterface[] */ public function getPublicKeys(); /** * OutputData for the script to be signed (will be * equal to getScriptPubKey, or getRedeemScript, or * getWitnessScript. * * @return OutputData */ public function getSignScript(); /** * OutputData for the txOut script. * * @return OutputData */ public function getScriptPubKey(); /** * Returns OutputData for the P2SH redeemScript. * * @return OutputData */ public function getRedeemScript(); /** * Returns OutputData for the P2WSH witnessScript. * * @return OutputData */ public function getWitnessScript(); /** * Returns whether the scriptPubKey is P2SH. * * @return bool */ public function isP2SH(); /** * Returns whether the scriptPubKey or redeemScript is P2WSH. * * @return bool */ public function isP2WSH(); /** * Sign the input using $key and $sigHashTypes * * @param PrivateKeyInterface $privateKey * @param int $sigHashType * @return $this */ public function sign(PrivateKeyInterface $privateKey, $sigHashType = SigHash::ALL); /** * Verifies the input using $flags for script verification, otherwise * uses the default, or that passed from SignData. * * @param int $flags * @return bool */ public function verify($flags = null); /** * Produces a SigValues instance containing the scriptSig & script witness * * @return SigValues */ public function serializeSignatures(); }