import { IDataTableQuery, IApiSuccess } from '../../../../../_common/services/api/api.models';
import { IGlobalPlugin } from '../../../../../_common/services/api/Auth/Abonnements';

export interface IDataTableQueryWithListAll extends IDataTableQuery {
    listAll: boolean;
}
export interface IDataTableQueryWithDontList extends IDataTableQuery {
    dontList?: boolean;
}
export declare enum PLUGIN_STATUS_CODES {
    CREATED = 0,
    PUBLISH_REQUESTED = 1,
    IN_VALIDATION = 2,
    CALLBACK = 3,
    PUBLISHED = 4,
    PUBLISH_DECLINED = 5,
    RESET = 6,
    NONE = 10
}
export declare const PLUGIN_STATUS: {
    0: {
        label: string;
        styles: string;
        icon: string;
        color: string;
    };
    1: {
        label: string;
        styles: string;
        icon: string;
        color: string;
    };
    2: {
        label: string;
        styles: string;
        icon: string;
        color: string;
    };
    3: {
        label: string;
        styles: string;
        icon: string;
        color: string;
    };
    4: {
        label: string;
        styles: string;
        icon: string;
        color: string;
    };
    5: {
        label: string;
        styles: string;
        icon: string;
        color: string;
    };
    6: {
        label: string;
        styles: string;
        icon: string;
        color: string;
    };
    10: {
        label: string;
        styles: string;
    };
};
export declare enum VERSION_TYPE {
    MODULE = "module",
    ROOT = "root",
    MAJOR = "major",
    MINOR = "minor",
    BUGFIX = "bugfix"
}
export interface IBaseVersion {
    canonicalVersion: string;
    pluginId: number;
    version: number;
}
export interface IVersionLeaf extends IBaseVersion {
    label: string;
    name: string;
    namespace: string;
    ownPlugin: boolean;
    isCompatible: boolean;
    status: number;
    type: VERSION_TYPE;
    children: IVersionLeaf[];
    checked2: boolean;
}
export interface IBugfixVersion extends IVersionLeaf {
    leaf: boolean;
    type: VERSION_TYPE.BUGFIX;
}
export interface IMinorVersion extends IVersionLeaf {
    type: VERSION_TYPE.MINOR;
    children: IBugfixVersion[];
}
export interface IMajorVersion extends IVersionLeaf {
    expanded: boolean;
    majorVersion: string;
    type: VERSION_TYPE.MAJOR;
    children: IMinorVersion[];
}
export interface IRootVersion extends IVersionLeaf {
    expanded: boolean;
    type: VERSION_TYPE.ROOT;
    children: IMajorVersion[];
}
export interface ILoadVersionTree extends IApiSuccess {
    children: IRootVersion[];
}
export interface ISaveModule {
    type: string;
    name: string;
    label: string;
    url?: string;
    description?: string;
    version: number;
    pluginId: number;
    sandboxCombo: string;
    comboTree: number[];
    copyright: string;
}
export interface ISaveModuleResponse extends IApiSuccess {
    plugin: IGlobalPlugin;
}
export interface IFlatCategory {
    active: boolean;
    id: number;
    leaf: boolean;
    levelIndicator: string;
    path: string;
    title: string;
    visibleInAppstore: boolean;
}
export interface ISaveNewPluginVersion extends IGlobalPlugin {
    major: number;
    sub1: number;
    sub2: number;
    imageData: Array<string[]>;
    sandboxCombo: string;
    dependencies: number[];
    reverseDependencies: number[];
}
export interface IGetVersion extends IDataTableQuery {
    id: number;
    mode: VERSION_TYPE;
}
export interface IEditPluginVersion extends ISaveNewPluginVersion {
    pluginId: number;
}
export interface IListPluginsForDependency extends IDataTableQuery {
    dontLoad: string[];
    pluginToEditNamespace: string;
}
export declare const childVersionType: Record<VERSION_TYPE, VERSION_TYPE>;
export interface IListTokens extends IDataTableQuery {
    pluginId: number;
}
export interface ICreateTokenResponse extends IApiSuccess {
    token: string[];
}
export interface IPublishStatus {
    pluginId: number;
    plugin: IGlobalPlugin;
    status: PLUGIN_STATUS_CODES;
    text: string;
    created: string;
    createdBy: number;
    modified: string;
    modifiedBy: number;
    readableStatus: string;
    id: number;
}
export interface IPublishVersion {
    id: number;
    sandboxId: number;
    message?: string;
}
