import { ModelComponent } from "./ModelComponent";
import { Surface } from "./Surface";
import { Item } from "./Items/Item";
import { Collection } from "../Collection";
import { WatermarkConfig } from "../Configuration/WatermarkConfig";
import { IGetAllItemsOptions } from "./IGetAllItemsOptions";
import { SafetyLine } from "./SafetyLine";
import { CropMark } from "./CropMark";
import { PointF } from "../Math/index";
import { IProductSerializer } from "../Serialization/IProductSerializer";
import { Palette } from "../Colors/Palette";
export declare class Product extends ModelComponent {
    palette: Palette;
    watermarkConfig: WatermarkConfig;
    defaultDesignLocation: PointF;
    private _defaultSafetyLines;
    private _defaultCropMarks;
    private _surfaces;
    private _preferredFonts;
    constructor(surfaces?: Surface[]);
    private _onSurfacesAdd;
    get surfaces(): Collection<Surface>;
    set surfaces(value: Collection<Surface>);
    serialize(serializer: IProductSerializer, forServer?: boolean): string;
    get defaultSafetyLines(): Collection<SafetyLine>;
    set defaultSafetyLines(value: Collection<SafetyLine>);
    get defaultCropMarks(): Collection<CropMark>;
    set defaultCropMarks(value: Collection<CropMark>);
    get preferredFonts(): string[];
    set preferredFonts(value: string[]);
    protected _copy(source: Product, destination: Product, generateNewIds: boolean): void;
    clone(generateNewIds?: boolean): Product;
    getAllItems(options?: IGetAllItemsOptions): Item[];
    generateNewIds(): void;
    /**
    * Get surface by name or index.
    * @param key - Surface name or index.
    */
    getSurface(key: string): Surface;
}
