import { KosCreationContext } from '../../../core';
import { FutureEndState, FutureResponse } from '../../services/future';
import { IFutureModel, IFutureModelOptions } from './future-types';
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);
    /**
     * @internal
     *
     * @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>;
    /**
     * @internal
     */
    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>;
    /**
     * Gets the current status of the future operation.
     *
     * @returns Status string: "NOT_ACTIVE", "IN_PROGRESS", "Success", or "Fail"
     *
     * @example Monitor Status
     * ```typescript
     * if (future.status === "IN_PROGRESS") {
     *   console.log(`Operation running: ${future.progress}% complete`);
     * } else if (future.status === "Success") {
     *   console.log("Operation completed successfully!");
     * }
     * ```
     */
    get status(): FutureEndState | "IN_PROGRESS" | "NOT_ACTIVE";
    /**
     * Gets human-readable time remaining for the operation.
     *
     * @returns Formatted time string (e.g., "5 minutes", "30 seconds") or empty string if unknown
     *
     * @example Display Time Remaining
     * ```typescript
     * const timeLeft = future.timeRemaining;
     * if (timeLeft) {
     *   console.log(`${timeLeft} remaining`);
     * }
     * ```
     */
    get timeRemaining(): string;
    /**
     * @internal
     * @category Subscription
     * Updates the Future model when a `kos.future/{ID}` event
     * is received from the server.
     *
     * @param future - the Future that was updated.
     * @see FutureResponse
     */
    handleFutureUpdated(future: FutureResponse): void;
}
export default FutureModel;
//# sourceMappingURL=future-model.d.ts.map