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

package com.hypixel.hytale.server.core.inventory.transaction;

import javax.annotation.Nullable;
import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
import javax.annotation.Nonnull;
import com.hypixel.hytale.server.core.inventory.MaterialQuantity;

public class MaterialSlotTransaction extends SlotTransaction
{
    @Nonnull
    private final MaterialQuantity query;
    private final int remainder;
    @Nonnull
    private final SlotTransaction transaction;
    
    public MaterialSlotTransaction(@Nonnull final MaterialQuantity query, final int remainder, @Nonnull final SlotTransaction transaction) {
        super(transaction.succeeded(), transaction.getAction(), transaction.getSlot(), transaction.getSlotBefore(), transaction.getSlotAfter(), transaction.getOutput(), transaction.isAllOrNothing(), transaction.isExactAmount(), transaction.isFilter());
        this.query = query;
        this.remainder = remainder;
        this.transaction = transaction;
    }
    
    @Nonnull
    public MaterialQuantity getQuery() {
        return this.query;
    }
    
    public int getRemainder() {
        return this.remainder;
    }
    
    @Nonnull
    public SlotTransaction getTransaction() {
        return this.transaction;
    }
    
    @Nonnull
    @Override
    public MaterialSlotTransaction toParent(final ItemContainer parent, final short start, final ItemContainer container) {
        return new MaterialSlotTransaction(this.query, this.remainder, this.transaction.toParent(parent, start, container));
    }
    
    @Nullable
    @Override
    public MaterialSlotTransaction fromParent(final ItemContainer parent, final short start, @Nonnull final ItemContainer container) {
        final SlotTransaction newTransaction = this.transaction.fromParent(parent, start, container);
        if (newTransaction == null) {
            return null;
        }
        return new MaterialSlotTransaction(this.query, this.remainder, newTransaction);
    }
    
    @Nonnull
    @Override
    public String toString() {
        return "MaterialSlotTransaction{query=" + String.valueOf(this.query) + ", remainder=" + this.remainder + ", transaction=" + String.valueOf(this.transaction) + "} " + super.toString();
    }
}
