import { Observable } from 'rxjs/Observable';
import { BaseObject, BaseObjectData } from 'empiria/ontology';
import { ProductTerm, Brand, Manufacturer, Category, Subcategory, PresentationUnit, ContentUnit } from './index';
export interface ProductData extends BaseObjectData {
    category: Category;
    subcategory: Subcategory;
    productTerm: ProductTerm;
    manufacturer: Manufacturer;
    brand: Brand;
    partNumber: string;
    name: string;
    searchTags: string;
    description: string;
    notes: string;
    presentationUnit: PresentationUnit;
    contentQty: number;
    contentUnit: ContentUnit;
    startDate: Date;
    lastUpdated: Date;
    manager: any;
    baseProduct: Product;
}
export declare class Product extends BaseObject<ProductData> implements ProductData {
    static parse(id: number): Product;
    static readonly empty: Product;
    static getList(keywords?: string): Product[];
    static getListAsync(keywords?: string): Observable<Product[]>;
    protected onload(data: ProductData): void;
    readonly category: Category;
    readonly subcategory: Subcategory;
    readonly productTerm: ProductTerm;
    readonly manufacturer: Manufacturer;
    readonly brand: Brand;
    readonly partNumber: string;
    readonly name: string;
    readonly searchTags: string;
    readonly description: string;
    readonly notes: string;
    readonly presentationUnit: PresentationUnit;
    readonly contentQty: number;
    readonly contentUnit: ContentUnit;
    readonly startDate: Date;
    readonly lastUpdated: Date;
    readonly manager: any;
    readonly isBaseProduct: boolean;
    readonly baseProduct: Product;
}
