pub mod p2pkh;
pub mod push_drop;
pub mod r_puzzle;
pub use p2pkh::P2PKH;
pub use push_drop::{decode as decode_push_drop, LockPosition, PushDrop, PushDropData};
pub use r_puzzle::RPuzzle;
use crate::script::error::ScriptError;
use crate::script::{LockingScript, UnlockingScript};
pub trait ScriptTemplateLock {
fn lock(&self) -> Result<LockingScript, ScriptError>;
}
pub trait ScriptTemplateUnlock {
fn sign(&self, preimage: &[u8]) -> Result<UnlockingScript, ScriptError>;
fn estimate_length(&self) -> Result<usize, ScriptError>;
}