export declare enum RealmSyncServerOperatingMode {
    MasterWithNoSlave = 0,
    MasterWithAsynchronousSlave = 1,
    MasterWithSynchronousSlave = 2,
    Slave = 3
}
export interface IRealmSyncServerConfiguration {
    id?: string;
    dataPath: string;
    publicKeyPath: string;
    logCallback?: (level: number, message: string) => void;
    logLevel?: string;
    errorCallback?: (code: number, categoryName: string, message: string) => void;
    slaveStatusCallback?: (id: string, upToDate: boolean) => void;
    listenAddress?: string;
    listenPort?: string | number;
    statsEndpoint?: string;
    operatingMode?: RealmSyncServerOperatingMode;
    masterAddress?: string;
    masterPort?: string | number;
    masterSlaveSharedSecret?: string;
    featureToken?: string;
    enableDownloadLogCompaction?: boolean;
    maxDownloadSize?: number;
    listenBacklog?: number;
    tcpNoDelay?: boolean;
    isSubtierServer?: boolean;
    upstreamUrl?: string;
    upstreamAccessToken?: string;
    logLsofPeriod?: number;
    historyTtl?: number;
    historyCompactionInterval?: number;
    enableLogCompaction?: boolean;
}
export interface IRealmSyncServerAddress {
    address: string;
    port: number;
}
export interface IRealmSyncServerConstructor {
    readonly prototype: {
        start(callback: (error?: any) => void): void;
        stop(callback: (error?: any) => void): void;
        address(): IRealmSyncServerAddress;
    };
    new (config: IRealmSyncServerConfiguration): any;
}
declare const RealmSyncServer_base: IRealmSyncServerConstructor;
export declare class RealmSyncServer extends RealmSyncServer_base {
    constructor(config: IRealmSyncServerConfiguration);
    start(): Promise<void>;
    stop(): Promise<void>;
    address(): any;
}
export {};
