/**
 * This program and the accompanying materials are made available under the terms of the
 * Eclipse Public License v2.0 which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-v20.html
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Copyright Contributors to the Zowe Project.
 *
 */
import type { ResourceTypes } from "../resources";
import type { IResourceContext } from "./IResourceContext";
import type { IBundle, IJVMServer, ILibrary, ILocalFile, IPipeline, IProgram, IRemoteFile, ISharedTSQueue, ITCPIP, ITSQueue, ITask, ITransaction, IURIMap, IWebService, IManagedRegion, IRegion } from "./resources";
export interface ResourceTypeMap {
    [ResourceTypes.CICSProgram]: IProgram;
    [ResourceTypes.CICSLocalFile]: ILocalFile;
    [ResourceTypes.CICSRemoteFile]: IRemoteFile;
    [ResourceTypes.CICSLocalTransaction]: ITransaction;
    [ResourceTypes.CICSTCPIPService]: ITCPIP;
    [ResourceTypes.CICSLibrary]: ILibrary;
    [ResourceTypes.CICSURIMap]: IURIMap;
    [ResourceTypes.CICSTask]: ITask;
    [ResourceTypes.CICSPipeline]: IPipeline;
    [ResourceTypes.CICSWebService]: IWebService;
    [ResourceTypes.CICSJVMServer]: IJVMServer;
    [ResourceTypes.CICSBundle]: IBundle;
    [ResourceTypes.CICSTSQueue]: ITSQueue;
    [ResourceTypes.CICSSharedTSQueue]: ISharedTSQueue;
    [ResourceTypes.CICSManagedRegion]: IManagedRegion;
    [ResourceTypes.CICSRegion]: IRegion;
}
export interface ResourceActionOptions<TType extends keyof ResourceTypeMap> {
    id: string;
    name: string;
    resourceType: TType;
    action: string | ((resource: ResourceTypeMap[TType], ctx: IResourceContext) => void | Promise<void>);
    visibleWhen?: (resource: ResourceTypeMap[TType], ctx: IResourceContext) => boolean | Promise<boolean>;
    refreshResourceInspector?: boolean;
}
export declare class ResourceAction<TType extends keyof ResourceTypeMap> {
    private _id;
    private _name;
    private _resourceType;
    private _action;
    private _visibleWhen;
    private _refreshResourceInspector;
    constructor({ id, name, resourceType, action, visibleWhen, refreshResourceInspector }: ResourceActionOptions<TType>);
    get id(): string;
    get name(): string;
    get resourceType(): TType;
    get visibleWhen(): (resource: ResourceTypeMap[TType], ctx: IResourceContext) => boolean | Promise<boolean>;
    get action(): string | ((resource: ResourceTypeMap[TType], ctx: IResourceContext) => void | Promise<void>);
    get refreshResourceInspector(): boolean;
}
