import { IFlatCategory, ILoadVersionTree, IDataTableQueryWithListAll, ISaveModule, ISaveModuleResponse, IDataTableQueryWithDontList, ISaveNewPluginVersion, IGetVersion, IEditPluginVersion, IListPluginsForDependency, IListTokens, ICreateTokenResponse, IPublishStatus, IPublishVersion, IRootVersion, IBaseVersion } from './Modules.models';
import { IGlobalPlugin } from '../../Auth/Abonnements';
import { IApiPayload, IApiSuccess, IDataFetcherResponse } from '../../api.models';
import { IGlobalPluginsToken } from '../../PlatformApplicationManager/InstalledPlugins';
import { IImage } from '../../common.models';
import { IDataTableQueryWithId } from '../../Auth/Users';
import { ICreateSandbox } from '../Sandboxes';

export declare const modulesApi: {
    /** List of all version 0.0.0 plugins. ADT request */
    listRootLevelPlugins(query: IDataTableQueryWithListAll): Promise<IDataFetcherResponse<IGlobalPlugin>>;
    /** list all version plugins for selection of sandbox mapping. ADT request */
    listModulesForSandboxMapping(query: IDataTableQueryWithDontList): Promise<IDataFetcherResponse<IGlobalPlugin>>;
    /** list all version for sandbox plugin */
    listVersionsForSandboxMapping(namespace: string): Promise<IApiPayload<string[]>>;
    /**   loadVersionTree  */
    loadVersionTree(pluginId: number): Promise<ILoadVersionTree>;
    /**   load Plugin  */
    loadPlugin(id: number): Promise<IApiPayload<IGlobalPlugin>>;
    /**   getFlatCategoryTree  | getFlatCategoryTree   */
    getFlatCategoryTree(pluginId?: number): Promise<IApiPayload<IFlatCategory[]>>;
    /**   getFlatCategoryTree  | getFlatCategoryTree   */
    saveModule(module: Partial<ISaveModule>): Promise<ISaveModuleResponse>;
    /**   load Plugin Images  */
    loadPluginImages(pluginId: number): Promise<IApiPayload<IImage[]>>;
    /**   save a new version of an existing plugin or editing an existing */
    saveNewPluginVersion(query: Partial<ISaveNewPluginVersion>): Promise<ISaveModuleResponse>;
    /**   get the latest version of plugin */
    getVersion(query: IGetVersion): Promise<IApiPayload<string>>;
    /**   Edit Plugin Version */
    editPluginVersion(query: Partial<IEditPluginVersion>): Promise<ISaveModuleResponse>;
    /** Remove image of plugin */
    deleteImage(id: number, softDelete?: boolean): Promise<IApiSuccess>;
    /**   list whole tree of plugins with at least one checked version  */
    listDependencyPluginTree(pluginId: number): Promise<ILoadVersionTree>;
    /**   Lists all minor versions which have the same namespace as the plugin with given id, ex  */
    listVersionsForDependencyCopy(pluginId: number): Promise<IDataFetcherResponse<IGlobalPlugin>>;
    /**   List plugins in dependency window  */
    listPluginsForDependency(query: IListPluginsForDependency): Promise<IDataFetcherResponse<IGlobalPlugin>>;
    /**   add new dependencies  */
    getNewDependencyTrees(dependencies: string): Promise<IApiPayload<IRootVersion[]>>;
    /**   listToken  */
    listToken(query: IListTokens): Promise<IDataFetcherResponse<IGlobalPluginsToken>>;
    /**   create Token  */
    createToken(pluginId: number, count?: number): Promise<ICreateTokenResponse>;
    /**   removeTokenById  */
    removeTokenById(ids: number): Promise<IApiSuccess>;
    /**   removeTokenByToken  */
    removeTokenByToken(token: string): Promise<IApiSuccess>;
    /**   get all publishing status logs of a plugin version  */
    getPublishStatus(query: IDataTableQueryWithId): Promise<IDataFetcherResponse<IPublishStatus>>;
    /**   getListOfPluginVersions  */
    getListOfPluginVersions(pluginId: number): Promise<IApiPayload<IBaseVersion[]>>;
    /**   getListOfReverseDependencies   */
    getListOfReverseDependencies(pluginId: number, ownPlugins: boolean): Promise<ILoadVersionTree>;
    /**   publishVersion  | queue a version for publishing   */
    publishVersion(query: IPublishVersion): Promise<IApiSuccess>;
    /**   getSandboxMapping | get the sandbox for single plugin   */
    getSandboxMapping(id: number): Promise<IApiPayload<ICreateSandbox[]>>;
};
