/// <reference types="node" />
import S3, { ClientConfiguration } from "aws-sdk/clients/s3";
import { AbstractAccessor, FileSystem, FileSystemObject } from "kura";
import { FileSystemOptions } from "kura/lib/FileSystemOptions";
import { S3FileSystemOptions } from "./S3FileSystemOption";
export declare class S3Accessor extends AbstractAccessor {
    private config;
    private bucket;
    private rootDir;
    private s3Options?;
    private urlCache;
    filesystem: FileSystem;
    name: string;
    s3: S3;
    constructor(config: ClientConfiguration, bucket: string, rootDir: string, s3Options?: S3FileSystemOptions);
    createIndexDir(dirPath: string): string;
    doDelete(fullPath: string, isFile: boolean): Promise<void>;
    doGetObject(fullPath: string, isFile: boolean): Promise<FileSystemObject>;
    doGetObjects(dirPath: string): Promise<FileSystemObject[]>;
    doMakeDirectory(_fullPath: string): Promise<void>;
    doReadContent(fullPath: string): Promise<Blob | BufferSource | string>;
    getURL(fullPath: string, method?: "GET" | "POST" | "PUT" | "DELETE"): Promise<string>;
    protected doWriteArrayBuffer(fullPath: string, buffer: ArrayBuffer): Promise<void>;
    protected doWriteBase64(fullPath: string, base64: string): Promise<void>;
    protected doWriteBlob(fullPath: string, blob: Blob): Promise<void>;
    protected doWriteBuffer(fullPath: string, buffer: Buffer): Promise<void>;
    protected initialize(options: FileSystemOptions): void;
    protected initializeIndexOptions(options: FileSystemOptions): void;
    private doReadContentUsingGetObject;
    private doReadContentUsingXHR;
    private doReadObjectsFromS3;
    private doWriteContentToS3;
    private doWriteContentUsingPutObject;
    private doWriteContentUsingUpload;
    private doWriteContentUsingUploadPart;
    private doWriteContentUsingXHR;
    private fromBody;
    private getKey;
    private getSignedUrl;
    private handleNotFoundErrorS3;
    private isNotFoundError;
    private toBody;
}
//# sourceMappingURL=S3Accessor.d.ts.map