import { ModelComponent } from "./ModelComponent";
import { Product } from "./Product";
import { IGetAllItemsOptions } from "./IGetAllItemsOptions";
import { Watermark } from "./Watermark";
import { PrintArea } from "./PrintArea";
import { InteractiveZone } from "./InteractiveZone";
import { Item } from "./Items";
import { SurfaceMockup } from "./SurfaceMockup";
import { Collection } from "../Collection";
import { SurfaceContainer } from "./Container";
import * as Enumerable from "linq/linq";
export declare class Surface extends ModelComponent {
    private _width;
    private _height;
    private _rotateAngle;
    private _mockup;
    private _printAreas;
    private _previewMockups;
    private _interactiveZones;
    private _printAreasCollectionChangedEvent;
    private _printAreaAddedEvent;
    private _printAreaRemovedEvent;
    private _activityZoneChangedEvent;
    constructor(width?: number, height?: number, mockup?: SurfaceMockup, printAreas?: PrintArea[], id?: string, name?: string, initDefaultContainers?: boolean);
    private _onContainersItemAdded;
    private _onContainersItemRemoved;
    parentProduct: Product;
    get rotateAngle(): number;
    set rotateAngle(value: number);
    watermark: Watermark;
    get width(): number;
    set width(value: number);
    get height(): number;
    set height(value: number);
    get mockup(): SurfaceMockup;
    set mockup(value: SurfaceMockup);
    get previewMockups(): Collection<SurfaceMockup>;
    set previewMockups(value: Collection<SurfaceMockup>);
    private _containers;
    get containers(): Collection<SurfaceContainer>;
    set containers(value: Collection<SurfaceContainer>);
    get printAreas(): Collection<PrintArea>;
    set printAreas(value: Collection<PrintArea>);
    get interactiveZones(): Collection<InteractiveZone>;
    set interactiveZones(value: Collection<InteractiveZone>);
    add_printAreaAdded(h: any): void;
    remove_printAreaAdded(h: any): void;
    add_printAreaRemoved(h: any): void;
    remove_printAreaRemoved(h: any): void;
    private _onPrintAreaAdded;
    private _onPrintAreaRemoved;
    getSimplifiedObject(): {};
    getAllItems(options?: IGetAllItemsOptions): Enumerable.IEnumerable<Item>;
    static getItems(surfaces: Enumerable.IEnumerable<Surface> | Surface[], options: IGetAllItemsOptions): Item[];
    getBackgroundItem(): Item;
    protected _copy(source: Surface, destination: Surface, generateNewIds: boolean): void;
    clone(generateNewIds?: boolean): Surface;
    generateNewIds(): void;
    static getAllItems(surfaces: Enumerable.IEnumerable<Surface> | Surface[], options?: IGetAllItemsOptions): Enumerable.IEnumerable<Item>;
    get nonChannelContainerItems(): Item[];
    private _subscribeInteractiveZonesEvents;
    private _unsubscribeInteractiveZonesEvents;
    private _onInteractiveZoneCollectionChanged;
}
