pub trait ReservationList {
// Required methods
fn master_edition(&self) -> Pubkey;
fn supply_snapshot(&self) -> Option<u64>;
fn reservations(&self) -> Vec<Reservation> ⓘ;
fn total_reservation_spots(&self) -> u64;
fn current_reservation_spots(&self) -> u64;
fn set_master_edition(&mut self, key: Pubkey);
fn set_supply_snapshot(&mut self, supply: Option<u64>);
fn set_reservations(
&mut self,
reservations: Vec<Reservation>
) -> ProgramResult;
fn add_reservation(
&mut self,
reservation: Reservation,
offset: u64,
total_spot_offset: u64
) -> ProgramResult;
fn set_total_reservation_spots(&mut self, total_reservation_spots: u64);
fn set_current_reservation_spots(&mut self, current_reservation_spots: u64);
fn save(&self, account: &AccountInfo<'_>) -> ProgramResult;
}