///
import { SynFinalReport } from "./SynFinalReport";
import { UserSettings } from "./UserSettings";
import { Song } from "./Song";
import * as events from 'strongly-typed-events';
import { PlayMusicCaller } from "./PlayMusicCaller";
import { ISimpleEvent } from "strongly-typed-events";
import { SynProgress, LongTaskProgress } from "./SynProgress";
import * as Loki from 'lokijs';
export declare class SynManager {
protected _onSyncProgress: events.SimpleEventDispatcher;
protected _onSyncMessage: events.SimpleEventDispatcher;
protected _onLongTaskProgress: events.SimpleEventDispatcher;
protected _onSyncTerminated: events.SimpleEventDispatcher;
readonly onSyncProgress: ISimpleEvent;
readonly onSyncMessage: ISimpleEvent;
readonly onLongTaskProgress: ISimpleEvent;
readonly onSyncTerminated: ISimpleEvent;
userSettings: UserSettings;
synReport: SynFinalReport;
protected playMusic: PlayMusicCaller;
constructor(userSettings: UserSettings);
prepareSynchronisation(): Promise;
applySynchronisation(): Promise;
protected escapeRegExp(str: string): string;
protected searchSongMatching(toSearch: Song, collection: Loki.Collection): T;
/**
* Helper method
*/
protected searchSongMatchingText(title: string, artist: string, album: string, duration: number, rating: number, collection: Loki.Collection): T;
/**
* First match test
* @param toSearch
* @param collection
*/
protected searchSongExactMatching(toSearch: Song, collection: Loki.Collection): T;
/**
* Second match test
* @param toSearch
* @param collection
*/
protected searchSongTitleAlbumAndTimeMatching(toSearch: Song, collection: Loki.Collection): T;
/**
* Third match test
* @param toSearch
* @param collection
*/
protected searchSongTitleArtistAndTimeMatching(toSearch: Song, collection: Loki.Collection): T;
/**
* Fourth match test
* @param toSearch
* @param collection
*/
protected searchSongArtistAlbumAndTimeMatching(toSearch: Song, collection: Loki.Collection): T;
/**
* Fifth match test
* @param toSearch
* @param collection
*/
protected searchTitleAndDurationAndNoAlbumOrArtistMatching(toSearch: Song, collection: Loki.Collection): T;
}