package com.tiedup.remake.entities.kidnapper.components;

import com.tiedup.remake.state.IRestrainable;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.Nullable;

/**
 * Host interface for KidnapperSaleManager callbacks.
 * Provides access to entity properties needed for sale management.
 */
public interface ISaleHost {
    /**
     * Get the entity's level/world.
     */
    Level level();

    /**
     * Check if this kidnapper has captives.
     */
    boolean hasCaptives();

    /**
     * Get the current captive.
     */
    @Nullable
    IRestrainable getCaptive();

    /**
     * Get the kidnapper's name for logging.
     */
    String getNpcName();

    /**
     * Set the "get out" / flee state after completing a sale.
     */
    void setGetOutState(boolean state);

    /**
     * Get the captive transfer flag.
     */
    boolean getAllowCaptiveTransferFlag();

    /**
     * Set the captive transfer flag.
     */
    void setAllowCaptiveTransferFlag(boolean flag);
}
