///
import { Readable } from 'stream';
import { TaskEither } from 'fp-ts/TaskEither';
import * as t from 'io-ts';
import { Option } from 'fp-ts/lib/Option';
import * as TE from 'fp-ts/TaskEither';
import { DynamicObject } from '../dynamictype/DynamicType';
export interface FileContentTypeCheckerInterface {
isFileContentType(value: unknown): value is string;
}
export declare const FileContentTypeChecker: FileContentTypeCheckerInterface;
export type FileMetadata = {
name: string;
size?: number;
contentType?: string;
};
export declare const fileMetadataDescriptor: t.Type;
export declare const fileDescriptorDescriptor: t.Type;
export type File = {
reference: FileDescriptor;
content: Readable;
};
export type FileDescriptor = {
_tag: 'FileDescriptor';
key: string;
metadata: FileMetadata;
};
export interface FileDescriptorInterface {
isFileDescriptor(value: unknown): value is FileDescriptor;
fromFile(file: File): FileDescriptor;
}
export declare const FileDescriptor: FileDescriptorInterface;
export type SharedUrl = {
url: string;
expires?: number;
};
export interface FileStorage {
write(file: File, writeOptions: Option): TaskEither;
read(key: string, name?: string): TaskEither;
getSharedUrl(key: string): TaskEither;
getSize(key: string): TaskEither;
delete(key: string): TaskEither;
createDirectory(key: string): TaskEither;
deleteDirectory(key: string): TE.TaskEither;
}
//# sourceMappingURL=File.d.ts.map