pub trait Encumbrance<AccountId, Hash, BlockNumber, CoinAmount> {
fn prefunding_for(
who: AccountId,
recipient: AccountId,
amount: CoinAmount,
deadline: BlockNumber,
ref_hash: Hash,
uid: Hash
) -> DispatchResultWithPostInfo;
fn send_simple_invoice(
who: AccountId,
recipient: AccountId,
amount: LedgerBalance,
ref_hash: Hash,
uid: Hash
) -> DispatchResultWithPostInfo;
fn settle_prefunded_invoice(
who: AccountId,
ref_hash: Hash,
uid: Hash
) -> DispatchResultWithPostInfo;
fn set_release_state(
who: AccountId,
o_lock: LockStatus,
ref_hash: Hash,
uid: Hash
) -> DispatchResultWithPostInfo;
fn unlock_funds_for_owner(
who: AccountId,
ref_hash: Hash,
uid: Hash
) -> DispatchResultWithPostInfo;
fn check_ref_owner(who: AccountId, ref_hash: Hash) -> bool;
fn check_ref_beneficiary(who: AccountId, ref_hash: Hash) -> bool;
}