package p.studio.workspaces.assets.details.bank;

import p.packer.messages.assets.AssetFamilyCatalog;
import p.studio.workspaces.assets.messages.AssetWorkspaceAssetDetails;
import p.studio.workspaces.assets.messages.AssetWorkspaceBankCompositionFile;

import java.util.List;

interface AssetDetailsBankCompositionFamilySupport {
    boolean supports(AssetFamilyCatalog assetFamily);

    AssetDetailsBankCompositionDraft createDraft(AssetWorkspaceAssetDetails details);

    AssetDetailsBankCompositionDraft moveToSelected(
            AssetDetailsBankCompositionDraft draft,
            List<AssetWorkspaceBankCompositionFile> files);

    AssetDetailsBankCompositionDraft moveToAvailable(
            AssetDetailsBankCompositionDraft draft,
            List<AssetWorkspaceBankCompositionFile> files);

    AssetDetailsBankCompositionDraft moveUp(
            AssetDetailsBankCompositionDraft draft,
            int selectedIndex);

    AssetDetailsBankCompositionDraft moveDown(
            AssetDetailsBankCompositionDraft draft,
            int selectedIndex);

    AssetDetailsBankCompositionCapacityState evaluate(AssetDetailsBankCompositionDraft draft);
}
