/*!
 * Copyright 2020 VMware, Inc.
 * SPDX-License-Identifier: BSD-2-Clause
 */
import { ActivityPromiseResolver } from './activity-promise-resolver';
/**
 * Expresses the contract between a activity status and the UI displaying a loading message, reporting
 * success or errors
 * Currently, only one concurrent activity is supported.
 */
export declare abstract class ActivityReporter {
    private promiseResolver;
    /**
     * Creates this reporter with the performer that it will use to monitor events.
     */
    constructor(promiseResolver: ActivityPromiseResolver<unknown>);
    abstract startActivity(): void;
    /**
     * Override this method to provide custom error reporting behavior.
     *
     *  @param errorText The text to display in the error alert.
     */
    abstract reportError(errorText: string): void;
    /**
     * Override this method to provide custom success reporting behavior.
     *
     * @param successMessage A message to display to the user.
     */
    abstract reportSuccess(successMessage: string): void;
    /**
     * Monitors a promise that returns an entity using {@link ActivityPromiseResolver.monitorActivity}.
     */
    monitorGet<T>(activityResolutionPromise: Promise<T>): Promise<T>;
    /**
     * Monitors a promise that returns many entities using {@link ActivityPromiseResolver.monitorActivities}.
     */
    monitorGetAll<T>(activityResolutionPromises: Promise<T[]>): Promise<T[]>;
    /**
     * Monitors a promise that returns an entity and posts a successMessage using {@link ActivityPromiseResolver.monitorActivity}.
     */
    monitorEdit<T>(activityResolutionPromise: Promise<T>, successMessage?: string): Promise<T>;
}
