import * as stream from 'stream'; import { FSM } from '@dra2020/baseclient'; import { Environment } from './env'; import { FsmAPIWatch } from '../utils/all'; export declare const ESuccess: number; export declare const EFail: number; export declare const ENotFound: number; export declare const EPending: number; export declare const EBadFormat: number; export type StorageState = number; export declare const StorageStateClean = 0; export declare const StorageStateDirty = 1; export declare const StorageStateSaving = 2; export declare const StorageStateLoading = 4; export declare const StorageStateLoadCanceled = 8; export declare const StorageStateLoadFailed = 16; export declare const StorageStateDeleting = 32; export declare const StorageStateDeleted = 64; export declare const StorageStateListing = 128; export type BucketMap = { [key: string]: string; }; export declare const BucketDefault = "default"; export declare const BucketDev = "development"; export declare const BucketProd = "production"; export declare const BucketLogs = "logs"; export type TransferUrlOp = 'putObject' | 'getObject'; export interface TransferParams { op: TransferUrlOp; contentType?: string; contentEncoding?: string; cacheControl?: string; key?: string; bucket?: string; } export type DispositionType = 'object' | 'string' | 'buffer' | 'compressedbuffer' | 'stream' | 'compressedstream' | 'filepath'; export type LoadToFilter = (blob: StorageBlob, a: any) => any; export interface BlobParams { id: string; bucket?: string; saveFromType?: DispositionType; saveFrom?: any; loadToType?: DispositionType; loadTo?: any; loadToFilter?: LoadToFilter; deleteAfterLoad?: boolean; suppressDeleteError?: boolean; ContentEncoding?: string; ContentType?: string; CacheControl?: string; autoContinue?: boolean; continuationToken?: string; } export declare class FsmTransferUrl extends FSM.Fsm { params: TransferParams; url: string; constructor(env: Environment, params: TransferParams); } export interface BlobProperties { Key?: string; ContentLength?: number; ContentDisposition?: string; ContentEncoding?: string; ContentType?: string; ContentLanguage?: string; LastModified?: string; ETag?: string; CacheControl?: string; } export interface MultiBufferList { buf: Buffer; next: MultiBufferList; } export declare class MultiBufferPassThrough extends stream.Duplex { _dopush: boolean; _head: MultiBufferList; _tail: MultiBufferList; constructor(); _read(): void; _dopushing(): void; _pushChunk(chunk: any): void; _write(chunk: any, encoding: string, cb: any): void; _done(): void; _flush(cb: any): void; _transform(chunk: any, encoding: string, cb: any): void; } export declare class StorageBlob { _env: Environment; params: BlobParams; state: StorageState; tStarted: Date; fsmSave: FSM.Fsm; fsmLoad: FSM.Fsm; fsmDel: FSM.Fsm; fsmList: FSM.Fsm; _props: FSM.FsmArray; _keys: FSM.FsmArray; br: BlobRequest; constructor(env: Environment, params: BlobParams); get env(): Environment; get keys(): string[]; get props(): BlobProperties[]; resetList(): void; get fsmArray(): FSM.Fsm; setSaveFrom(t: DispositionType, data: any): void; setLoadTo(t: DispositionType): void; needSave(): boolean; isSaving(): boolean; isLoading(): boolean; isListing(): boolean; setListing(): void; setListed(): void; isDeleting(): boolean; isDeleted(): boolean; isLoadFailed(): boolean; isValid(): boolean; isReadable(): boolean; isDirty(): boolean; isSafeToUnload(): boolean; setDirty(): void; setInit(): void; setLoading(): void; setLoaded(result: number): void; setSaving(): void; setSaved(result: number): void; setDeleting(): void; setDeleted(result: number): void; startLoad(sm: StorageManager): void; startHead(sm: StorageManager): void; checkSave(sm: StorageManager): void; startDelete(sm: StorageManager): void; endSave(br: BlobRequest): void; endLoad(br: BlobRequest): void; endHead(br: BlobRequest): void; endDelete(br: BlobRequest): void; startList(sm: StorageManager, continuationToken?: string): void; endList(br: BlobRequest): void; toLoadStream(): stream.Readable; setLoadStream(rs: stream.Readable): void; } export interface BlobRequest { blob: StorageBlob; result(): number; asBuffer(): Buffer; asString(): string; asError(): string; asProps(): BlobProperties[]; continuationToken(): string; } export interface BlobRequestIndex { [key: string]: BlobRequest; } export declare class StorageManager { _env: Environment; saveBlobIndex: BlobRequestIndex; loadBlobIndex: BlobRequestIndex; headBlobIndex: BlobRequestIndex; delBlobIndex: BlobRequestIndex; lsBlobIndex: BlobRequestIndex; onList: any; bucketMap: BucketMap; fsmAPIWatch: FsmAPIWatch; constructor(env: Environment, bucketMap?: BucketMap); save(blob: StorageBlob): void; load(blob: StorageBlob): void; del(blob: StorageBlob): void; head(blob: StorageBlob): void; ls(blob: StorageBlob, continuationToken?: string): void; createTransferUrl(params: TransferParams): FsmTransferUrl; on(eventName: string, cb: any): void; off(eventName: string, cb: any): void; emit(eventName: string, blob: StorageBlob): void; }