/**
 * @category Service Module
 * @name /services/future
 * @version 1.0.0
 * @author Matthew Holman <maholman@coca-cola.com>
 *
 * Services that can be invoked to perform operations on Futures
 */
/**
 * The possible endState codes returned by a Future
 */
export declare enum FutureEndState {
    Success = "SUCCESS",
    Fail = "FAIL",
    Aborted = "ABORT",
    Canceled = "CANCEL"
}
/**
 * The response from the server when an organization is
 * created or updated
 */
export interface FutureResponse {
    tracker?: string;
    /** the id of the Future */
    id: string;
    /** the remaining time of the Future */
    remainingTimeMs?: number;
    /** the progress of the Future */
    progress?: number;
    /** the end state of the Future */
    endState?: FutureEndState;
    /** the reason for a failure */
    reason?: string;
    /** object containing client data */
    clientData?: Record<string, unknown>;
    /** object containing reason data */
    reasonData?: {
        name: string;
        version: string;
    } | {
        vmId: string;
        target: string;
    } | {
        vmId: string;
        target: string;
    }[];
    /** object containing client data */
    note?: string;
}
export interface FutureRequest {
    /** the id of the Future to create */
    id: string;
}
/**
 * @category Service
 * Retrieves the list of Futures.
 */
export declare const getFutures: () => Promise<import('../../../core').KosServiceResponse<FutureResponse[]> | undefined>;
/**
 * Removes an Future based on the id.
 *
 * While the immediate response to the request is empty, and additions will be broadcast
 * to all interested listeners on the `/future/delete` event channel.
 *
 * @param futureId - the id of the future to be deleted
 * @returns an empty response with status 200.
 */
export declare const deleteFuture: (id: string, path?: string) => Promise<import('../../../core').KosServiceResponse<unknown> | undefined>;
/**
 * Adds a new Future.
 *
 *
 * While the immediate response to the request is empty, and additions will be broadcast
 * to all interested listeners on the `/future/add` event channel.
 *
 * @param organization - the organization to be added
 * @returns an empty response with status 200.
 * @internal
 */
export declare const addFuture: (future: FutureRequest, path?: string) => Promise<import('../../../core').KosServiceResponse<any> | undefined>;
/**
 * Modifies an Future from the server based on the id.
 *
 * While the immediate response to the request is empty, and additions will be broadcast
 * to all interested listeners on the `/future/update` event channel.
 *
 * @param id - the id of the Future to be modified
 * @returns an empty response with status 200.
 */
export declare const modifyFuture: (id: string, model: FutureRequest, path?: string) => Promise<import('../../../core').KosServiceResponse<any> | undefined>;
/**
 * Cancels a Future from the server based on the id.
 *
 * @param id - the id of the Future to be modified
 * @returns an empty response with status 200.
 */
export declare const cancelFuture: (id: string, path?: string) => Promise<import('../../../core').KosServiceResponse<any> | undefined>;
//# sourceMappingURL=index.d.ts.map