/**
 * @author Martin Karkowski
 * @email m.karkowski@zema.de
 */
import { INopeDispatcher } from "../../types/nope";
/**
 * Generate and registers a ping service.
 *
 * @author M.Karkowski
 * @export
 * @param {INopeDispatcher} dispatcher
 * @return {*} The function to ping all dispatchers.
 */
export declare function generatePingServices(dispatcher: INopeDispatcher): Promise<{
    determinePing: (target: string) => Promise<{
        requestId: string;
        dispatcherId: string;
        timestamp: number;
        isMaster: boolean;
        ping: number;
    }>;
    pingAll: () => Promise<{
        pings: {
            requestId: string;
            dispatcherId: string;
            timestamp: number;
            isMaster: boolean;
            ping: number;
        }[];
        avg: number;
        max: {
            max: number;
            index: number;
        };
        min: {
            min: number;
            index: number;
        };
    }>;
}>;
/**
 * Helper to generate the Accessors to ping dispatchers or ping all
 * systems
 *
 * @author M.Karkowski
 * @export
 * @param {INopeDispatcher} dispatcher The Dispatcher, used to perform the calls.
 * @return {*}
 */
export declare function generatePingAccessors(dispatcher: INopeDispatcher): Promise<{
    determinePing: (target: string) => Promise<{
        requestId: string;
        dispatcherId: string;
        timestamp: number;
        isMaster: boolean;
        ping: number;
    }>;
    pingAll: () => Promise<{
        pings: {
            requestId: string;
            dispatcherId: string;
            timestamp: number;
            isMaster: boolean;
            ping: number;
        }[];
        avg: number;
        max: {
            max: number;
            index: number;
        };
        min: {
            min: number;
            index: number;
        };
    }>;
}>;
/**
 * Registers a sync service, which will syncronize the time
 *
 * @author M.Karkowski
 * @export
 * @param {INopeDispatcher} dispatcher
 * @return {*} The Sync-Method to call
 */
export declare function enableTimeSyncing(dispatcher: INopeDispatcher): Promise<{
    manualSyncTime: () => Promise<void>;
}>;
/**
 * Helper, that lets enables waiting for a required dispatcher.
 *
 * @author M.Karkowski
 * @export
 * @param {INopeDispatcher} dispatcher
 * @return {*}
 */
export declare function waitForDispatcher(dispatcher: INopeDispatcher, name: string): Promise<{}>;
/**
 * A Helper to create a Service to manually define a master.
 *
 * @author M.Karkowski
 * @export
 * @param {INopeDispatcher} dispatcher The Dispatcher to use.
 * @return {*}
 */
export declare function generateDefineMaster(dispatcher: INopeDispatcher): Promise<{
    setMaster: () => Promise<void>;
}>;
