import { IFutureModel, IFutureModelOptions } from './future-types';
import { FutureEndState, FutureResponse } from '../../services/future';
import { KosCreationContext } from '../../../core';

interface FutureModel extends IFutureModel {
}
/**
 * @category future
 * @name FutureModel
 * @version 1.0.0
 * @author Matthew Holman <maholman@coca-cola.com>
 *
 * Represents a future.
 */
declare class FutureModel implements IFutureModel {
    private logger;
    private _cancelFuture;
    futureId: string;
    /**
     * @category Constructor
     *
     * @param modelId - the unique modelId for this Future
     * @param options - any options that should be merged into the Future
     * @params options.id - the unique id of the Future
     * @params options.name - the name of the Future
     *
     */
    constructor(modelId: string, options: IFutureModelOptions, context: KosCreationContext);
    /**
     * @category Lifecycle
     *
     * @remarks
     * No action is taken as part of the load lifecycle method.
     *
     * In future additional information about the workspace could be loaded
     */
    load(): Promise<void>;
    unload(): void;
    /**
     * @category Action
     *
     * @remark
     * Cancels the current future.
     *
     * If a service was passed in as part of the options in the constructor
     * then it will be used.  Otherwise the default services will be invoked.
     *
     * @see cancelFutureService
     */
    cancelFuture(): Promise<void>;
    get status(): FutureEndState | "IN_PROGRESS" | "NOT_ACTIVE";
    get timeRemaining(): string;
    /**
     * @category Subscription
     * Updates the Future model when a `kos.future/ID` event
     * is received from the server.
     *
     *
     * @param data - the raw callback
     * @param data.body - the Future that was updated.
     * @see FutureResponse
     */
    handleFutureUpdated(future: FutureResponse): void;
}
export default FutureModel;
//# sourceMappingURL=future-model.d.ts.map