-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Resources for working with miniscript, and script descriptors -- -- Resources for working with miniscript, and script descriptors @package bitcoin-scripting @version 0.3.0 module Language.Bitcoin.Miniscript.Witness -- | Compute a scriptinput which satisfies this miniscript satisfy :: ChainState -> SatisfactionContext -> Miniscript -> Either SatisfactionError Script data SatisfactionContext satisfactionContext :: [(ByteString, ByteString)] -> [(PubKeyI, Signature)] -> SatisfactionContext -- | Use with the monoid instance to add a signature to the -- SatisfactionContext signature :: PubKeyI -> Signature -> SatisfactionContext -- | Use with the monoid instance to add preimage to the -- SatisfactionContext preimage :: ByteString -> ByteString -> SatisfactionContext lookupSignature :: PubKeyI -> SatisfactionContext -> Maybe Signature lookupPreimage :: ByteString -> SatisfactionContext -> Maybe ByteString data ChainState ChainState :: Maybe Int -> Maybe Int -> ChainState [blockHeight] :: ChainState -> Maybe Int [utxoAge] :: ChainState -> Maybe Int emptyChainState :: ChainState data Signature Signature :: !Sig -> !SigHash -> Signature [sig] :: Signature -> !Sig [sigHash] :: Signature -> !SigHash data SatisfactionError MissingSignature :: [KeyDescriptor] -> SatisfactionError MissingPreimage :: ByteString -> SatisfactionError FreeVariable :: Text -> SatisfactionError TypeError :: Text -> Miniscript -> SatisfactionError Impossible :: SatisfactionError AbstractKey :: KeyDescriptor -> SatisfactionError instance GHC.Show.Show Language.Bitcoin.Miniscript.Witness.Signature instance GHC.Classes.Eq Language.Bitcoin.Miniscript.Witness.Signature instance GHC.Show.Show Language.Bitcoin.Miniscript.Witness.OrdPubKeyI instance GHC.Classes.Eq Language.Bitcoin.Miniscript.Witness.OrdPubKeyI instance GHC.Show.Show Language.Bitcoin.Miniscript.Witness.SatisfactionContext instance GHC.Classes.Eq Language.Bitcoin.Miniscript.Witness.SatisfactionContext instance GHC.Show.Show Language.Bitcoin.Miniscript.Witness.ChainState instance GHC.Classes.Eq Language.Bitcoin.Miniscript.Witness.ChainState instance GHC.Show.Show Language.Bitcoin.Miniscript.Witness.SatisfactionError instance GHC.Classes.Eq Language.Bitcoin.Miniscript.Witness.SatisfactionError instance GHC.Show.Show Language.Bitcoin.Miniscript.Witness.SatScript instance GHC.Classes.Eq Language.Bitcoin.Miniscript.Witness.SatScript instance GHC.Show.Show Language.Bitcoin.Miniscript.Witness.SatResult instance GHC.Classes.Eq Language.Bitcoin.Miniscript.Witness.SatResult instance GHC.Base.Semigroup Language.Bitcoin.Miniscript.Witness.SatScript instance GHC.Base.Monoid Language.Bitcoin.Miniscript.Witness.SatScript instance GHC.Exception.Type.Exception Language.Bitcoin.Miniscript.Witness.SatisfactionError instance GHC.Base.Semigroup Language.Bitcoin.Miniscript.Witness.SatisfactionContext instance GHC.Base.Monoid Language.Bitcoin.Miniscript.Witness.SatisfactionContext instance GHC.Classes.Ord Language.Bitcoin.Miniscript.Witness.OrdPubKeyI module Language.Bitcoin.Script.Utils pushNumber :: Int -> ScriptOp -- | Encode a numeric stack value toCScriptNum :: Int -> ByteString -- | Decode a numeric stack value fromCScriptNum :: ByteString -> Int -- | A library for working with bitcoin script descriptors. Documentation -- taken from -- https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md. module Language.Bitcoin.Script.Descriptors -- | High level description for a bitcoin output data OutputDescriptor -- | The output is secured by the given script. ScriptPubKey :: ScriptDescriptor -> OutputDescriptor -- | P2SH embed the argument. P2SH :: ScriptDescriptor -> OutputDescriptor -- | P2WPKH output for the given compressed pubkey. P2WPKH :: KeyDescriptor -> OutputDescriptor -- | P2WSH embed the argument. P2WSH :: ScriptDescriptor -> OutputDescriptor -- | P2SH-P2WPKH the given compressed pubkey. WrappedWPkh :: KeyDescriptor -> OutputDescriptor -- | P2SH-P2WSH the given script WrappedWSh :: ScriptDescriptor -> OutputDescriptor -- | An alias for the collection of pk(KEY) and pkh(KEY). If the key is -- compressed, it also includes wpkh(KEY) and sh(wpkh(KEY)). Combo :: KeyDescriptor -> OutputDescriptor -- | The script which ADDR expands to. Addr :: Address -> OutputDescriptor -- | Specialize key families occurring in the descriptor to the given index outputDescriptorAtIndex :: KeyIndex -> OutputDescriptor -> OutputDescriptor -- | High level description of a bitcoin script data ScriptDescriptor -- | Require a signature for this key Pk :: KeyDescriptor -> ScriptDescriptor -- | Require a key matching this hash and a signature for that key Pkh :: KeyDescriptor -> ScriptDescriptor -- | k-of-n multisig script. Multi :: Int -> [KeyDescriptor] -> ScriptDescriptor -- | k-of-n multisig script with keys sorted lexicographically in the -- resulting script. SortedMulti :: Int -> [KeyDescriptor] -> ScriptDescriptor -- | the script whose hex encoding is HEX. Raw :: ByteString -> ScriptDescriptor -- | Specialize key families occurring in the descriptor to the given index scriptDescriptorAtIndex :: KeyIndex -> ScriptDescriptor -> ScriptDescriptor data KeyDescriptor KeyDescriptor :: Maybe Origin -> Key -> KeyDescriptor [origin] :: KeyDescriptor -> Maybe Origin [keyDef] :: KeyDescriptor -> Key data Origin Origin :: Fingerprint -> DerivPath -> Origin [fingerprint] :: Origin -> Fingerprint [derivation] :: Origin -> DerivPath data Key -- | DER-hex encoded secp256k1 public key Pubkey :: PubKeyI -> Key -- | (de)serialized as WIF SecretKey :: SecKeyI -> Key XPub :: XPubKey -> DerivPath -> KeyCollection -> Key -- | Represent whether the key corresponds to a collection (and how) or a -- single key. data KeyCollection Single :: KeyCollection -- | immediate hardened children HardKeys :: KeyCollection -- | immediate non-hardened children SoftKeys :: KeyCollection -- | Test whether the key descriptor corresponds to a single key isDefinite :: KeyDescriptor -> Bool -- | For key families, get the key at the given index. Otherwise, return -- the input key. keyAtIndex :: Word32 -> Key -> Key -- | Specialize key families occurring in the descriptor to the given index keyDescriptorAtIndex :: KeyIndex -> KeyDescriptor -> KeyDescriptor -- | Produce a pubkey if possible keyDescPubKey :: KeyDescriptor -> Maybe PubKeyI -- | Simple explicit public key with no origin information pubKey :: PubKeyI -> KeyDescriptor -- | Simple explicit secret key with no origin information secKey :: SecKeyI -> KeyDescriptor -- | Produce a key literal if possible keyBytes :: KeyDescriptor -> Maybe ByteString -- | Extract pubkeys from an OutputDescriptor where possible outputDescriptorPubKeys :: OutputDescriptor -> [PubKeyI] -- | Extract pubkeys from a ScriptDescriptor where possible scriptDescriptorPubKeys :: ScriptDescriptor -> [PubKeyI] descriptorToText :: Network -> OutputDescriptor -> Text descriptorToTextWithChecksum :: Network -> OutputDescriptor -> Text keyDescriptorToText :: Network -> KeyDescriptor -> Text -- | An OutputDescriptor with checksum details data ChecksumDescriptor ChecksumDescriptor :: OutputDescriptor -> ChecksumStatus -> Text -> ChecksumDescriptor -- | The output descriptor [descriptor] :: ChecksumDescriptor -> OutputDescriptor -- | The status of the output descriptor's checksum [checksumStatus] :: ChecksumDescriptor -> ChecksumStatus -- | The expected checksum for the output descriptor [expectedChecksum] :: ChecksumDescriptor -> Text -- | The status of an output descriptor's checksum data ChecksumStatus -- | Checksum provided is valid Valid :: ChecksumStatus -- | Checksum provided is invalid Invalid :: Text -> ChecksumStatus -- | Checksum is not provided Absent :: ChecksumStatus parseDescriptor :: Network -> Text -> Either String ChecksumDescriptor outputDescriptorParser :: Network -> Parser ChecksumDescriptor parseKeyDescriptor :: Network -> Text -> Either String KeyDescriptor keyDescriptorParser :: Network -> Parser KeyDescriptor -- | Get the set of addresses associated with an output descriptor. The -- list will be empty if: -- --