package peergos.shared.user.fs;
import peergos.shared.*;
import peergos.shared.cbor.*;
import peergos.shared.crypto.random.*;
import peergos.shared.crypto.symmetric.*;
import peergos.shared.user.*;
import peergos.shared.util.*;
import java.util.*;
import java.util.concurrent.*;
public interface FileRetriever extends Cborable {
Optional<Location> getNext(SymmetricKey dataKey);
byte[] getNonce();
CompletableFuture<AsyncReader> getFile(NetworkAccess network,
SafeRandom random,
SymmetricKey dataKey,
long fileSize,
Location ourLocation,
ProgressConsumer<Long> monitor);
CompletableFuture<Optional<LocatedEncryptedChunk>> getEncryptedChunk(long bytesRemainingUntilStart,
long bytesRemainingUntilEnd,
byte[] nonce,
SymmetricKey dataKey,
Location ourLocation,
NetworkAccess network,
ProgressConsumer<Long> monitor);
CompletableFuture<Optional<Location>> getLocationAt(Location startLocation,
long offset,
SymmetricKey dataKey,
NetworkAccess network);
CompletableFuture<Optional<LocatedChunk>> getChunkInputStream(NetworkAccess network,
SafeRandom random,
SymmetricKey dataKey,
long startIndex,
long truncateTo,
Location ourLocation,
ProgressConsumer<Long> monitor);
static FileRetriever fromCbor(CborObject cbor) {
return EncryptedChunkRetriever.fromCbor(cbor);
}
}