-- | Arbitrary SigInput with a ScriptOutput of type PayPK
arbitraryPKSigInput :: Gen (SigInput, PrvKey)
arbitraryPKSigInput = do
    k <- arbitraryPrvKey
    let out = PayPK $ derivePubKey k
    op <- arbitraryOutPoint
    sh <- arbitraryValidSigHash
    return (SigInput out op sh Nothing, k)

-- | Arbitrary SigInput with a ScriptOutput of type PayPKHash
arbitraryPKSigInput :: Gen (SigInput, PrvKey)
arbitraryPKSigInput = do
    k <- arbitraryPrvKey
    let out = PayPK $ derivePubKey k
    op <- arbitraryOutPoint
    sh <- arbitraryValidSigHash
    return (SigInput out op sh Nothing, k)

-- | Arbitrary SigInput with a ScriptOutput of type PayPKHash
arbitraryPKSigInput = do
    k <- arbitraryPrvKey
    let out = PayPK $ derivePubKey k
    op <- arbitraryOutPoint
    sh <- arbitraryValidSigHash
    return (SigInput out op sh Nothing, k)

-- | Arbitrary SigInput with a ScriptOutput of type PayPKHash