import { C8oBase } from "./c8oBase";
import { C8oHttpInterfaceCore } from "./c8oHttpInterfaceCore";
import { C8oLogger } from "./c8oLogger";
import { C8oLogLevel } from "./c8oLogLevel";
import { C8oSettings } from "./c8oSettings";
import { C8oFullSync } from "./c8oFullSync";
import { C8oResponseListener } from "./c8oResponse";
import { C8oCallTask } from "./c8oCallTask";
import { C8oFullSyncChangeListener } from "./c8oFullSyncChangeListener";
import { C8oPromise } from "./c8oPromise";
import { C8oExceptionListener } from "./Exception/c8oExceptionListener";
import { Observable, Subject } from 'rxjs';
import { C8oManagerNetwork } from "./c8oManagerNetwork";
import { C8oManagerDatabase } from "./c8oManagerDatabase";
import { C8oManagerSession } from "./c8oManagerSession";
export declare abstract class C8oCore extends C8oBase {
    protected static RE_REQUESTABLE: RegExp;
    protected static RE_ENDPOINT: RegExp;
    static ENGINE_PARAMETER_PROJECT: string;
    static ENGINE_PARAMETER_SEQUENCE: string;
    static ENGINE_PARAMETER_CONNECTOR: string;
    static ENGINE_PARAMETER_TRANSACTION: string;
    static ENGINE_PARAMETER_ENCODED: string;
    static ENGINE_PARAMETER_DEVICE_UUID: string;
    static ENGINE_PARAMETER_PROGRESS: string;
    static ENGINE_PARAMETER_FROM_LIVE: string;
    lastChangeTimeStamp: number;
    lastChangeSetTimeout: any;
    threshold: number;
    static use_merge_prefix: string;
    static FS_POLICY: string;
    static FS_POLICY_NONE: string;
    static FS_POLICY_CREATE: string;
    static FS_POLICY_OVERRIDE: string;
    static FS_POLICY_MERGE: string;
    static FS_SUBKEY_SEPARATOR: string;
    static SEQ_AUTO_LOGIN_OFF: string;
    static FS_LIVE: string;
    static LOCAL_CACHE_DOCUMENT_KEY_RESPONSE: string;
    static LOCAL_CACHE_DOCUMENT_KEY_RESPONSE_TYPE: string;
    static LOCAL_CACHE_DOCUMENT_KEY_EXPIRATION_DATE: string;
    static LOCAL_CACHE_DATABASE_NAME: string;
    static RESPONSE_TYPE_XML: string;
    static RESPONSE_TYPE_JSON: string;
    private static deviceUUID;
    protected _endpoint: string;
    protected _endpointConvertigo: string;
    protected _endpointIsSecure: boolean;
    protected _endpointHost: string;
    protected _endpointPort: string;
    protected _endpointProject: string;
    protected _automaticRemoveSplashsCreen: boolean;
    httpInterface: C8oHttpInterfaceCore;
    c8oLogger: C8oLogger;
    c8oFullSync: C8oFullSync;
    lives: C8oCallTask[];
    livesDb: string[];
    subscriber_session: Subject<any>;
    subscriber_session_changed: Subject<any>;
    subscriber_network: Subject<any>;
    subscriber_login: Subject<any>;
    private _reply;
    protected data: any;
    protected _http: any;
    protected _couchUrl: string;
    protected promiseConstructor: Promise<any>;
    protected promiseInit: Promise<any>;
    promiseFinInit: Promise<any>;
    protected promiseReachable: Promise<any>;
    private promiseManagerNetwork;
    protected replicationsToRestart: Array<any>;
    private _waitingForInit;
    reachable: any;
    network: C8oManagerNetwork;
    database: C8oManagerDatabase;
    session: C8oManagerSession;
    couchUrl: string;
    logC8o: boolean;
    logRemote: boolean;
    logLevelLocal: C8oLogLevel;
    readonly log: C8oLogger;
    toString(): string;
    endpoint: string;
    endpointConvertigo: string;
    endpointIsSecure: boolean;
    endpointHost: string;
    endpointPort: string;
    endpointProject: string;
    readonly deviceUUID: Promise<string>;
    readonly httpPublic: any;
    resetBase: boolean;
    prefixBase: boolean;
    abstract readonly sdkVersion: string;
    readonly coreVersion: string;
    xsrfUsed: boolean;
    constructor();
    importLoginState(c8o: C8oCore): void;
    protected extractendpoint(): void;
    call(requestable: string, parameters?: Object, c8oResponseListener?: C8oResponseListener, c8oExceptionListener?: C8oExceptionListener): void;
    _call(parameters?: Object, c8oResponseListener?: C8oResponseListener, c8oExceptionListener?: C8oExceptionListener): void;
    callJsonObject(requestable: string, parameters: Object): C8oPromise<JSON>;
    callJson(requestable: string, ...parameters: any[]): C8oPromise<JSON>;
    static toParameters(parameters: any): Object;
    removeNull(parameters: any): void;
    handleCallException(c8oExceptionListener: C8oExceptionListener, requestParameters: Object, exception: Error): void;
    handleSessionLost(): Subject<any>;
    handleSessionAuthenticatedUserChanged(): Subject<any>;
    handleNetworkEvents(): Subject<any>;
    handleAutoLoginResponse(): Subject<any>;
    get_attachment(id: string, attachment_name: string, database_name?: string): Promise<any>;
    addFullSyncChangeListener(db: string, listener: C8oFullSyncChangeListener, parameters?: Object): void;
    removeFullSyncChangeListener(db: string, listener: C8oFullSyncChangeListener): void;
    addLive(liveid: string, db: string, task: C8oCallTask): void;
    cancelLive(liveid: string): void;
    private executeHandleFullSyncLive;
    protected handleFullSyncLive: C8oFullSyncChangeListener;
    abstract httpGetObservable(uri: any): Observable<any>;
    abstract initC8oHttInterface(): void;
    init(c8oSettings?: C8oSettings): Promise<any>;
    finalizeInit(): Promise<any>;
}
export declare class FullSyncPolicy {
    static NONE: FullSyncPolicy;
    static CREATE: FullSyncPolicy;
    static OVERRIDE: FullSyncPolicy;
    static MERGE: FullSyncPolicy;
    value: string;
    action: (PouchDB: any, Object: any, subPolicy?: any) => any;
    constructor(value: string, action: (_Object: any, Object: any) => any);
    static values(): FullSyncPolicy[];
    static getFullSyncPolicy(value: string): FullSyncPolicy;
}
export declare class FullSyncPostDocumentParameter {
    static POLICY: FullSyncPostDocumentParameter;
    static SUBKEY_SEPARATOR: FullSyncPostDocumentParameter;
    name: string;
    constructor(name: string);
    static values(): FullSyncPostDocumentParameter[];
}
