/**
 * Copyright (c) 2025. Broadcom.  All rights reserved. The term
 * "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
 *
 * This software and all information contained therein is
 * confidential and proprietary and shall not be duplicated,
 * used, disclosed, or disseminated in any way except as
 * authorized by the applicable license agreement, without the
 * express written permission of Broadcom.  All authorized
 * reproductions must be marked with this language.

 * EXCEPT AS SET FORTH IN THE APPLICABLE LICENSE AGREEMENT, TO
 * THE EXTENT PERMITTED BY APPLICABLE LAW, BROADCOM PROVIDES THIS
 * SOFTWARE WITHOUT WARRANTY OF ANY KIND, INCLUDING WITHOUT
 * LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
 * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT WILL BROADCOM
 * BE LIABLE TO THE END USER OR ANY THIRD PARTY FOR ANY LOSS OR
 * DAMAGE, DIRECT OR INDIRECT, FROM THE USE OF THIS SOFTWARE,
 * INCLUDING WITHOUT LIMITATION, LOST PROFITS, BUSINESS
 * INTERRUPTION, GOODWILL, OR LOST DATA, EVEN IF BROADCOM IS
 * EXPRESSLY ADVISED OF SUCH LOSS OR DAMAGE.
 *
 **/
import { ICommandHandler, IHandlerParameters, Session, ICommandArguments, IHandlerResponseApi } from "@zowe/imperative";
import { ICheck } from "../../api/doc/ICheck";
/**
 * The base handler class for the "check" action. The sub-commands under "check" are
 * variations of the same action, just with different data sources. This is the
 * common handler for each.
 * @export
 * @class LocalFile
 * @implements {ICommandHandler}
 */
export default abstract class BaseCheckHandler implements ICommandHandler {
    private static readonly MaxTableColumnWidth;
    protected args: ICommandArguments;
    protected resp: IHandlerResponseApi;
    protected session: Session;
    /**
     * Perform the check and returns the JCLCHECK API response.
     */
    abstract performCheck(options?: string): Promise<ICheck>;
    /**
     * Base command handler for "check" command.
     * @param params The input handler parameters from Imperative (arguments, profiles, etc.)
     */
    process(params: IHandlerParameters): Promise<void>;
    /**
     * Evaluate the max RC parameter and throw an error if exceeded.
     * @param maxRc The maximum acceptable return code.
     * @param jclcheckRc The actual return code.
     */
    private evalMaxRc;
}
