import { C8oCore, FullSyncPolicy } from "./c8oCore";
import { C8oFullSyncChangeListener } from "./c8oFullSyncChangeListener";
import { C8oLocalCacheResponse } from "./c8oLocalCacheResponse";
import { C8oResponseListener } from "./c8oResponse";
import { C8oFullSyncDatabase } from "./fullSyncDatabase";
import { FullSyncDefaultResponse, FullSyncDocumentOperationResponse } from "./fullSyncResponse";
export declare class C8oFullSync {
    private static FULL_SYNC_URL_PATH;
    static FULL_SYNC_PROJECT: string;
    static FULL_SYNC__ID: string;
    static FULL_SYNC__REV: string;
    static FULL_SYNC__ATTACHMENTS: string;
    c8o: C8oCore;
    protected fullSyncDatabaseUrlBase: string;
    protected localSuffix: string;
    constructor(c8o: C8oCore);
    handleFullSyncRequest(_parameters: Object, listener: C8oResponseListener): Promise<any>;
    handleFullSyncResponse(response: any, listener: C8oResponseListener): any;
    static isFullSyncRequest(requestParameter: Object): boolean;
}
export declare class C8oFullSyncCbl extends C8oFullSync {
    private static ATTACHMENT_PROPERTY_KEY_CONTENT_URL;
    private fullSyncDatabases;
    private fullSyncChangeListeners;
    private cblChangeListeners;
    constructor(c8o: C8oCore);
    getOrCreateFullSyncDatabase(databaseName: string): C8oFullSyncDatabase;
    handleFullSyncResponse(response: any, listener: C8oResponseListener): any;
    handleGetAttachmentUrlRequest(fullSyncDatabaseName: string, docid: string, parameters: Object): Promise<any>;
    handleGetDocumentRequest(fullSyncDatabaseName: string, docid: string, parameters: Object): Promise<any>;
    handleDeleteDocumentRequest(DatabaseName: string, docid: string, parameters: Object): Promise<any>;
    handlePostDocumentRequest(databaseName: string, fullSyncPolicy: FullSyncPolicy, parameters: Object): Promise<FullSyncDocumentOperationResponse>;
    handlePutAttachmentRequest(databaseName: string, docid: string, attachmentName: string, attachmentType: string, attachmentContent: any): Promise<any>;
    handleDeleteAttachmentRequest(databaseName: string, docid: string, attachmentName: string): Promise<any>;
    handleAllDocumentsRequest(databaseName: string, parameters: Object): Promise<any>;
    handleGetViewRequest(databaseName: string, ddocName: string, viewName: string, parameters: Object): Promise<any>;
    handleSyncRequest(databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener): Promise<any>;
    handleReplicatePullRequest(databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener): Promise<any>;
    handleReplicatePushRequest(databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener): Promise<any>;
    handleResetDatabaseRequest(databaseName: string): Promise<FullSyncDefaultResponse>;
    handleCreateDatabaseRequest(databaseName: string): FullSyncDefaultResponse;
    handleBulkRequest(databaseName: string, parameters: Object): Promise<FullSyncDefaultResponse>;
    handleInfoRequest(databaseName: string): Promise<FullSyncDefaultResponse>;
    handleDestroyDatabaseRequest(databaseName: string): Promise<FullSyncDefaultResponse>;
    static mergeProperties(newProperties: Object, oldProperties: Object): void;
    static mergeArrayProperties(newArray: any, oldArray: any): void;
    getDocucmentFromDatabase(c8o: C8oCore, databaseName: string, documentId: string): Promise<any>;
    overrideDocument(document: any, properties: Object, databaseName: any): void;
    getResponseFromLocalCache(c8oCallRequestIdentifier: string): Promise<any>;
    saveResponseToLocalCache(c8oCallRequestIdentifier: string, localCacheResponse: C8oLocalCacheResponse): Promise<any>;
    addFullSyncChangeListener(db: string, listener: C8oFullSyncChangeListener): void;
    removeFullSyncChangeListener(db: string, listener: C8oFullSyncChangeListener): void;
}
