import { Observer, Observable, Subject, BehaviorSubject } from 'rxjs';
import { RxCouchConfig, CouchDBChanges, CouchDBDocument, WatcherConfig, CouchDBPreDocument, CouchDBFindQuery, CouchDBGenericResponse, CouchDBUUIDSResponse, CouchDBSecurity } from './types';
import { CouchDBSession } from './couchdbsession';
import { CouchDBDocumentCollection } from './couchdbdocumentcollection';
export declare class CouchDB {
    couchSession: CouchDBSession;
    private rxhttpDebug;
    documents: CouchDBDocumentCollection;
    private changeFeedAbort;
    private appDocChanges;
    private changeFeedSubscription;
    private databaseName;
    private host;
    private port;
    private ssl;
    private trackChanges;
    constructor(rxCouchConfig: RxCouchConfig, couchSession?: CouchDBSession, rxhttpDebug?: boolean);
    configureChangeFeed(config: WatcherConfig): void;
    reconfigure(rxCouchConfig: RxCouchConfig): void;
    private closeChangeFeed;
    config(): Observable<WatcherConfig>;
    doc(document: CouchDBDocument | CouchDBPreDocument | string): BehaviorSubject<CouchDBDocument>;
    find(query: CouchDBFindQuery): Observable<CouchDBDocument[]>;
    changes(stopChanges?: Subject<boolean>, config?: WatcherConfig): Observable<CouchDBChanges>;
    delete(docs: CouchDBDocument[]): any;
    edit(docs: CouchDBDocument[]): any;
    all(): Observable<CouchDBGenericResponse>;
    createDb(name: string): Observable<CouchDBGenericResponse>;
    deleteDb(name: string): Observable<CouchDBGenericResponse>;
    secureDb(name: string, securityObject: CouchDBSecurity): Observable<CouchDBGenericResponse>;
    uuids(count?: number): Observable<CouchDBUUIDSResponse>;
    bulkModify(docs: CouchDBDocument[], observer: Observer<CouchDBGenericResponse>): void;
    private getDocument;
    private saveDocument;
    private durableHttpRequest;
    private httpRequestWithAuthRetry;
    private httpRequest;
    private httpRequestOptions;
    private cookieForRequestHeader;
    private stopListeningForLocalChanges;
    private listenForLocalChanges;
}
