import { IImage, ITenant } from '../../common.models';
import { IDataTableQuery } from '../../api.models';
import { VERSION_TYPE } from '../../../../../_core/services/api/Development/Modules';

export interface IAbonnementRequest {
    uuid?: string;
    id?: number;
}
export interface IPluginsImages extends IImage {
    pluginId: {};
    image: any;
}
export interface ICategoryInformation {
    title: string;
    parent: {};
    children: {};
    sortOrder: number;
    active: boolean;
    visibleInAppstore: boolean;
    leaf: boolean;
    id: number;
}
export interface IGlobalPlugin {
    myCompatibility: {};
    compatibleWithMe: {};
    children: {};
    parent: string | number | boolean | object;
    codebase: string | number | boolean | object;
    namespace: string;
    name: string;
    label: string;
    url: string;
    description: string;
    active: boolean;
    created: string;
    createdBy: number;
    modified: string;
    modifiedBy: number;
    author: string;
    copyright: string;
    devToken: string;
    version: number;
    canonicalVersion: string;
    type: VERSION_TYPE;
    changelog: string;
    shortDesc: string;
    certificationActindo: boolean;
    highlightListings: boolean;
    notpublic: boolean;
    inAppstore: boolean;
    /** The Actindo App Store link for this plugin or null if the plugin is not in the Actindo App Store */
    appStoreLink: boolean;
    images: IPluginsImages[];
    status: number;
    inDeployRelease: number;
    releaseBranch: string;
    releaseDate: string;
    realeasedVersion: Record<string, any>;
    leaf: boolean;
    expanded: boolean;
    /** Plugin is compatible (only for listDependencyPluginTree, null otherwise) */
    isCompatible: boolean;
    categoryInformations: ICategoryInformation[];
    pricemodel: boolean;
    pricePerUser: boolean;
    canRent: boolean;
    canBuy: boolean;
    canTest: boolean;
    setupCost: number;
    monthly_priceStandart: number;
    fixed_priceStandart: number;
    monthly_countUserOne: number;
    monthly_priceUserOne: number;
    monthly_countUserTwo: number;
    monthly_priceUserTwo: number;
    monthly_countUserThree: number;
    monthly_priceUserThree: number;
    monthly_countUserFour: number;
    monthly_priceUserFour: number;
    monthly_countUserFive: number;
    monthly_priceUserFive: number;
    fixed_countUserOne: number;
    fixed_priceUserOne: number;
    fixed_countUserTwo: number;
    fixed_priceUserTwo: number;
    fixed_countUserThree: number;
    fixed_priceUserThree: number;
    fixed_countUserFour: number;
    fixed_priceUserFour: number;
    fixed_countUserFive: number;
    fixed_priceUserFive: number;
    minRuntime: number;
    periodOfCancellation: number;
    testingTime: number;
    upgradeInklusive: number;
    billingPeriodDiscount_1: number;
    billingPeriodCount_1: number;
    billingPeriodDiscount_2: number;
    billingPeriodCount_2: number;
    billingPeriodDiscount_3: number;
    billingPeriodCount_3: number;
    billingPeriodDiscount_4: number;
    billingPeriodCount_4: number;
    billingPeriodDiscount_5: number;
    billingPeriodCount_5: number;
    lastAppStorePush: string;
    lastContinuoPush: string;
    isBundle: boolean;
    id: number;
}
export interface IAbonnement {
    /** Unique ID of the abonnement */
    uuid: string;
    tenant: ITenant;
    plugin: IGlobalPlugin;
    pluginName: string;
    pluginVersion: string;
    quantity: number;
    expires: string;
    /** Canonical (user readable) representation of expires/token column */
    expiresText: string;
    informationText: string;
    parent: IAbonnement;
    children: {};
    bundleEntry: {};
    isToken: boolean;
    created: string;
    createdBy: number;
    createdByUsername: string;
    modified: string;
    modifiedBy: number;
    modifiedByUsername: string;
    id: number;
}
export interface IDataTableQueryWithActive extends IDataTableQuery {
    onlyActive?: boolean;
}
