use snarkvm_utilities::bytes::{FromBytes, ToBytes};
use std::hash::Hash;
pub trait Record: Default + FromBytes + ToBytes {
type Owner;
type Commitment: FromBytes + ToBytes;
type CommitmentRandomness;
type Payload;
type SerialNumberNonce;
type SerialNumber: Clone + Eq + Hash + FromBytes + ToBytes;
type Value: FromBytes + ToBytes;
fn owner(&self) -> &Self::Owner;
fn is_dummy(&self) -> bool;
fn payload(&self) -> &Self::Payload;
fn birth_program_id(&self) -> &[u8];
fn death_program_id(&self) -> &[u8];
fn serial_number_nonce(&self) -> &Self::SerialNumberNonce;
fn commitment(&self) -> Self::Commitment;
fn commitment_randomness(&self) -> Self::CommitmentRandomness;
fn value(&self) -> Self::Value;
}