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

package com.hypixel.hytale.builtin.asseteditor.datasource;

import com.hypixel.hytale.common.plugin.PluginManifest;
import java.time.Instant;
import com.hypixel.hytale.builtin.asseteditor.EditorClient;
import java.nio.file.Path;
import com.hypixel.hytale.builtin.asseteditor.assettypehandler.AssetTypeHandler;
import java.util.Collection;
import com.hypixel.hytale.builtin.asseteditor.AssetTree;

public interface DataSource
{
    void start();
    
    void shutdown();
    
    AssetTree getAssetTree();
    
    AssetTree loadAssetTree(final Collection<AssetTypeHandler> p0);
    
    boolean doesDirectoryExist(final Path p0);
    
    boolean createDirectory(final Path p0, final EditorClient p1);
    
    boolean deleteDirectory(final Path p0);
    
    boolean moveDirectory(final Path p0, final Path p1);
    
    boolean doesAssetExist(final Path p0);
    
    byte[] getAssetBytes(final Path p0);
    
    boolean updateAsset(final Path p0, final byte[] p1, final EditorClient p2);
    
    boolean createAsset(final Path p0, final byte[] p1, final EditorClient p2);
    
    boolean deleteAsset(final Path p0, final EditorClient p1);
    
    boolean moveAsset(final Path p0, final Path p1, final EditorClient p2);
    
    boolean shouldReloadAssetFromDisk(final Path p0);
    
    Instant getLastModificationTimestamp(final Path p0);
    
    default void updateRuntimeAssets() {
    }
    
    Path getFullPathToAssetData(final Path p0);
    
    boolean isImmutable();
    
    Path getRootPath();
    
    PluginManifest getManifest();
}
