import { Composition, CompositionProps } from '@teambit/compositions';
import { DeprecationInfo } from '@teambit/deprecation';
import { Descriptor } from '@teambit/envs';
import { ComponentID, ComponentIdObj } from '@teambit/component-id';
import { LegacyComponentLog } from '@teambit/legacy-component-log';
import { ComponentPreviewSize } from '@teambit/preview';
import { TagMap } from '../../tag-map';
import { TagProps } from '../../tag/tag';
export type ComponentModelProps = {
    id: ComponentIdObj;
    description: string;
    buildStatus?: string;
    server?: ComponentServer;
    displayName: string;
    packageName: string;
    compositions?: CompositionProps[];
    tags?: TagProps[];
    issuesCount?: number;
    status?: any;
    deprecation?: DeprecationInfo;
    env?: Descriptor;
    labels?: string[];
    host?: string;
    latest?: string;
    preview?: ComponentPreview;
    logs?: LegacyComponentLog[];
    size?: ComponentPreviewSize;
};
export type ComponentPreview = {
    includesEnvTemplate?: boolean;
    isScaling?: boolean;
    onlyOverview?: boolean;
    legacyHeader?: boolean;
    useNameParam?: boolean;
    skipIncludes?: boolean;
};
export type ComponentServer = {
    env: string;
    /**
     * Full dev server url.
     */
    url?: string;
    /**
     * host of the component server (used mostly by cloud providers for remote scopes)
     */
    host?: string;
    /**
     * This is used mostly by cloud to proxy requests to the correct scope.
     */
    basePath?: string;
};
export declare class ComponentModel {
    /**
     * id of the component
     */
    readonly id: ComponentID;
    /**
     * display name of the component.
     */
    readonly displayName: string;
    /**
     * package name of the component.
     */
    readonly packageName: string;
    /**
     * the component server.
     */
    readonly server: ComponentServer | undefined;
    /**
     * array of compositions
     */
    readonly compositions: Composition[];
    /**
     * tags of the component.
     */
    readonly tags: TagMap;
    /**
     * component build status
     */
    readonly buildStatus?: string | undefined;
    /**
     * issues of component.
     */
    readonly issuesCount?: number | undefined;
    /**
     * status of component.
     */
    readonly status?: any;
    /**
     * deprecation info of the component.
     */
    readonly deprecation?: DeprecationInfo | undefined;
    /**
     * env descriptor.
     */
    readonly environment?: Descriptor | undefined;
    /**
     * description of the component.
     */
    readonly description: string;
    readonly labels: string[];
    /**
     * host of the component
     */
    readonly host?: string | undefined;
    /**
     *
     * size preview
     */
    readonly size?: ComponentPreviewSize | undefined;
    /**
     * latest version of component
     */
    readonly latest?: string | undefined;
    readonly preview?: ComponentPreview | undefined;
    readonly logs?: LegacyComponentLog[] | undefined;
    constructor(
    /**
     * id of the component
     */
    id: ComponentID, 
    /**
     * display name of the component.
     */
    displayName: string, 
    /**
     * package name of the component.
     */
    packageName: string, 
    /**
     * the component server.
     */
    server: ComponentServer | undefined, 
    /**
     * array of compositions
     */
    compositions: Composition[], 
    /**
     * tags of the component.
     */
    tags: TagMap, 
    /**
     * component build status
     */
    buildStatus?: string | undefined, 
    /**
     * issues of component.
     */
    issuesCount?: number | undefined, 
    /**
     * status of component.
     */
    status?: any, 
    /**
     * deprecation info of the component.
     */
    deprecation?: DeprecationInfo | undefined, 
    /**
     * env descriptor.
     */
    environment?: Descriptor | undefined, 
    /**
     * description of the component.
     */
    description?: string, labels?: string[], 
    /**
     * host of the component
     */
    host?: string | undefined, 
    /**
     *
     * size preview
     */
    size?: ComponentPreviewSize | undefined, 
    /**
     * latest version of component
     */
    latest?: string | undefined, preview?: ComponentPreview | undefined, logs?: LegacyComponentLog[] | undefined);
    get version(): string;
    /**
     * create an instance of a component from a plain object.
     */
    static from({ id, server, displayName, compositions, packageName, tags, deprecation, buildStatus, env, status, issuesCount, description, labels, host, latest, preview, size, logs, }: ComponentModelProps): ComponentModel;
    static fromArray(componentsProps: ComponentModelProps[]): ComponentModel[];
    static empty(): ComponentModel;
}
