// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.builtin.beds.sleep.components;

import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
import java.time.Instant;

public sealed interface PlayerSleep permits FullyAwake, MorningWakeUp, NoddingOff, Slumber
{
    public enum FullyAwake implements PlayerSleep
    {
        INSTANCE;
    }
    
    record MorningWakeUp(Instant gameTimeStart) implements PlayerSleep {
        public static PlayerSomnolence createComponent(final WorldTimeResource worldTimeResource) {
            final Instant now = worldTimeResource.getGameTime();
            final MorningWakeUp state = new MorningWakeUp(now);
            return new PlayerSomnolence(state);
        }
    }
    
    record Slumber(Instant gameTimeStart) implements PlayerSleep {
        public static PlayerSomnolence createComponent(final WorldTimeResource worldTimeResource) {
            final Instant now = worldTimeResource.getGameTime();
            final Slumber state = new Slumber(now);
            return new PlayerSomnolence(state);
        }
    }
    
    record NoddingOff(Instant realTimeStart) implements PlayerSleep {
        public static PlayerSomnolence createComponent() {
            final Instant now = Instant.now();
            final NoddingOff state = new NoddingOff(now);
            return new PlayerSomnolence(state);
        }
    }
}
