use keccak256;
use SolValue;
use crateTridentClientError;
use crateSpendIntent;
use cratev1;
/// Computes the canonical spend-spec hash from a proto spend intent.
///
/// This hash identifies the spend specification itself and excludes fields that
/// do not belong to the spec identity, such as signatures and attestation
/// wrapper data.
pub