import type { BaseHitTestResult, Viewport as BaseViewport, BaseViewProjection, Rect } from '@univerjs/core';
import type { CanvasBaseViewRenderController, IBaseRenderContext } from './base-view-render-controller';
import { Disposable } from '@univerjs/core';
import { Scene, SceneViewer, Viewport } from '@univerjs/engine-render';
import { BaseCanvasRenderComponent } from './base-canvas-render-component';
export interface IBaseSubSceneMountOptions<TProjection extends BaseViewProjection = BaseViewProjection> {
    unitId: string;
    tableId: string;
    viewId: string;
    parentScene: Scene;
    controller: CanvasBaseViewRenderController<TProjection>;
    rect: Rect;
    interactionColors: IBaseRenderContext['interactionColors'];
    projection?: TProjection;
    sceneKey?: string;
    viewerKey?: string;
    viewportKey?: string;
    componentKey?: string;
    zIndex?: number;
    activeRecordId?: IBaseRenderContext['activeRecordId'];
    scrollX?: number;
    scrollY?: number;
    ganttLeftPaneScrollX?: number;
    overscanRows?: number;
    collapsedGroupPaths?: ReadonlySet<string>;
    gridSelection?: IBaseRenderContext['gridSelection'];
    gridSearchMatches?: IBaseRenderContext['gridSearchMatches'];
    gridSearchActiveMatch?: IBaseRenderContext['gridSearchActiveMatch'];
    gridFillPreview?: IBaseRenderContext['gridFillPreview'];
    gridColumnResizeDragX?: IBaseRenderContext['gridColumnResizeDragX'];
    gridFreezeDragX?: IBaseRenderContext['gridFreezeDragX'];
    gridFreezeHoverY?: IBaseRenderContext['gridFreezeHoverY'];
    gridFieldDrag?: IBaseRenderContext['gridFieldDrag'];
    gridHoverAddField?: IBaseRenderContext['gridHoverAddField'];
    gridHoverAddRecordRow?: IBaseRenderContext['gridHoverAddRecordRow'];
    gridHoverFieldId?: IBaseRenderContext['gridHoverFieldId'];
    gridHoverFieldMenuFieldId?: IBaseRenderContext['gridHoverFieldMenuFieldId'];
    gridHoverFieldDescriptionFieldId?: IBaseRenderContext['gridHoverFieldDescriptionFieldId'];
    gridHoverCellRecordId?: IBaseRenderContext['gridHoverCellRecordId'];
    gridHoverCellFieldId?: IBaseRenderContext['gridHoverCellFieldId'];
    gridHoverLinkActionRecordId?: IBaseRenderContext['gridHoverLinkActionRecordId'];
    gridHoverLinkActionFieldId?: IBaseRenderContext['gridHoverLinkActionFieldId'];
    gridHoverOpenRecordId?: IBaseRenderContext['gridHoverOpenRecordId'];
    gridSelectOptionRemoveHover?: IBaseRenderContext['gridSelectOptionRemoveHover'];
    gridAttachmentDropTarget?: IBaseRenderContext['gridAttachmentDropTarget'];
    gridHoverRowHeaderRecordId?: IBaseRenderContext['gridHoverRowHeaderRecordId'];
    gridVirtualRows?: IBaseRenderContext['gridVirtualRows'];
    gridHoverRecordId?: IBaseRenderContext['gridHoverRecordId'];
    gridOpenRecordId?: IBaseRenderContext['gridOpenRecordId'];
    gridOpenRecordLabel?: IBaseRenderContext['gridOpenRecordLabel'];
    gridCloseRecordLabel?: IBaseRenderContext['gridCloseRecordLabel'];
    gridAddRecordLabel?: IBaseRenderContext['gridAddRecordLabel'];
    gridRecordLabel?: IBaseRenderContext['gridRecordLabel'];
    gridRecordCountLabel?: IBaseRenderContext['gridRecordCountLabel'];
    gridCalculateLabel?: IBaseRenderContext['gridCalculateLabel'];
    gridAttachmentDropLabel?: IBaseRenderContext['gridAttachmentDropLabel'];
    gridRatingHover?: IBaseRenderContext['gridRatingHover'];
    gridRowDrag?: IBaseRenderContext['gridRowDrag'];
    kanbanColumnScroll?: IBaseRenderContext['kanbanColumnScroll'];
    kanbanLaneScrollbarVisibleKeys?: IBaseRenderContext['kanbanLaneScrollbarVisibleKeys'];
    kanbanLaneScrollbarHoverKey?: IBaseRenderContext['kanbanLaneScrollbarHoverKey'];
    kanbanLaneScrollbarDraggingKey?: IBaseRenderContext['kanbanLaneScrollbarDraggingKey'];
    kanbanCardDrag?: IBaseRenderContext['kanbanCardDrag'];
    kanbanHoverRecordId?: IBaseRenderContext['kanbanHoverRecordId'];
    kanbanHoverAddRecordGroupKey?: IBaseRenderContext['kanbanHoverAddRecordGroupKey'];
    kanbanHoverAddGroup?: IBaseRenderContext['kanbanHoverAddGroup'];
    kanbanAddRecordLabel?: IBaseRenderContext['kanbanAddRecordLabel'];
    kanbanMoveRecordLabel?: IBaseRenderContext['kanbanMoveRecordLabel'];
    galleryHoverRecordId?: IBaseRenderContext['galleryHoverRecordId'];
    galleryCardDrag?: IBaseRenderContext['galleryCardDrag'];
    gallerySearchRecordIds?: IBaseRenderContext['gallerySearchRecordIds'];
    gallerySearchActiveRecordId?: IBaseRenderContext['gallerySearchActiveRecordId'];
    gridRowHeight?: IBaseRenderContext['gridRowHeight'];
    gridFieldIndicators?: IBaseRenderContext['gridFieldIndicators'];
    gridStatLabels?: IBaseRenderContext['gridStatLabels'];
    conditionalColoringRules?: IBaseRenderContext['conditionalColoringRules'];
    summaryBarHovered?: boolean;
    scrollbar?: IBaseRenderContext['scrollbar'];
    kanbanSearchRecordIds?: IBaseRenderContext['kanbanSearchRecordIds'];
    kanbanSearchActiveRecordId?: IBaseRenderContext['kanbanSearchActiveRecordId'];
    calendarAnchorDate?: IBaseRenderContext['calendarAnchorDate'];
    calendarSearchRecordIds?: IBaseRenderContext['calendarSearchRecordIds'];
    calendarSearchActiveRecordId?: IBaseRenderContext['calendarSearchActiveRecordId'];
    calendarAllDayScrollY?: IBaseRenderContext['calendarAllDayScrollY'];
    calendarHover?: IBaseRenderContext['calendarHover'];
    calendarEventDrag?: IBaseRenderContext['calendarEventDrag'];
    calendarKeyboardFocus?: IBaseRenderContext['calendarKeyboardFocus'];
    calendarTodayLabel?: IBaseRenderContext['calendarTodayLabel'];
    calendarDayLabel?: IBaseRenderContext['calendarDayLabel'];
    calendarWeekLabel?: IBaseRenderContext['calendarWeekLabel'];
    calendarMonthLabel?: IBaseRenderContext['calendarMonthLabel'];
    calendarMoreLabel?: IBaseRenderContext['calendarMoreLabel'];
    ganttSearchRecordIds?: IBaseRenderContext['ganttSearchRecordIds'];
    ganttSearchActiveRecordId?: IBaseRenderContext['ganttSearchActiveRecordId'];
    ganttHover?: IBaseRenderContext['ganttHover'];
    ganttBarDrag?: IBaseRenderContext['ganttBarDrag'];
    ganttFieldsLabel?: IBaseRenderContext['ganttFieldsLabel'];
    ganttTodayLabel?: IBaseRenderContext['ganttTodayLabel'];
    ganttWeekLabel?: IBaseRenderContext['ganttWeekLabel'];
    ganttMonthLabel?: IBaseRenderContext['ganttMonthLabel'];
    ganttQuarterLabel?: IBaseRenderContext['ganttQuarterLabel'];
    ganttYearLabel?: IBaseRenderContext['ganttYearLabel'];
}
export interface IBaseSceneHostMountOptions<TProjection extends BaseViewProjection = BaseViewProjection> {
    unitId: string;
    tableId: string;
    viewId: string;
    parentScene: Scene;
    controller: CanvasBaseViewRenderController<TProjection>;
    rect: Rect;
    interactionColors: IBaseRenderContext['interactionColors'];
    projection?: TProjection;
    componentKey?: string;
    zIndex?: number;
    activeRecordId?: IBaseRenderContext['activeRecordId'];
    scrollX?: number;
    scrollY?: number;
    ganttLeftPaneScrollX?: number;
    overscanRows?: number;
    collapsedGroupPaths?: ReadonlySet<string>;
    gridSelection?: IBaseRenderContext['gridSelection'];
    gridSearchMatches?: IBaseRenderContext['gridSearchMatches'];
    gridSearchActiveMatch?: IBaseRenderContext['gridSearchActiveMatch'];
    gridFillPreview?: IBaseRenderContext['gridFillPreview'];
    gridColumnResizeDragX?: IBaseRenderContext['gridColumnResizeDragX'];
    gridFreezeDragX?: IBaseRenderContext['gridFreezeDragX'];
    gridFreezeHoverY?: IBaseRenderContext['gridFreezeHoverY'];
    gridFieldDrag?: IBaseRenderContext['gridFieldDrag'];
    gridHoverAddField?: IBaseRenderContext['gridHoverAddField'];
    gridHoverAddRecordRow?: IBaseRenderContext['gridHoverAddRecordRow'];
    gridHoverFieldId?: IBaseRenderContext['gridHoverFieldId'];
    gridHoverFieldMenuFieldId?: IBaseRenderContext['gridHoverFieldMenuFieldId'];
    gridHoverFieldDescriptionFieldId?: IBaseRenderContext['gridHoverFieldDescriptionFieldId'];
    gridHoverCellRecordId?: IBaseRenderContext['gridHoverCellRecordId'];
    gridHoverCellFieldId?: IBaseRenderContext['gridHoverCellFieldId'];
    gridHoverLinkActionRecordId?: IBaseRenderContext['gridHoverLinkActionRecordId'];
    gridHoverLinkActionFieldId?: IBaseRenderContext['gridHoverLinkActionFieldId'];
    gridHoverOpenRecordId?: IBaseRenderContext['gridHoverOpenRecordId'];
    gridSelectOptionRemoveHover?: IBaseRenderContext['gridSelectOptionRemoveHover'];
    gridAttachmentDropTarget?: IBaseRenderContext['gridAttachmentDropTarget'];
    gridHoverRowHeaderRecordId?: IBaseRenderContext['gridHoverRowHeaderRecordId'];
    gridVirtualRows?: IBaseRenderContext['gridVirtualRows'];
    gridHoverRecordId?: IBaseRenderContext['gridHoverRecordId'];
    gridOpenRecordId?: IBaseRenderContext['gridOpenRecordId'];
    gridOpenRecordLabel?: IBaseRenderContext['gridOpenRecordLabel'];
    gridCloseRecordLabel?: IBaseRenderContext['gridCloseRecordLabel'];
    gridAddRecordLabel?: IBaseRenderContext['gridAddRecordLabel'];
    gridRecordLabel?: IBaseRenderContext['gridRecordLabel'];
    gridRecordCountLabel?: IBaseRenderContext['gridRecordCountLabel'];
    gridCalculateLabel?: IBaseRenderContext['gridCalculateLabel'];
    gridAttachmentDropLabel?: IBaseRenderContext['gridAttachmentDropLabel'];
    gridRatingHover?: IBaseRenderContext['gridRatingHover'];
    gridRowDrag?: IBaseRenderContext['gridRowDrag'];
    kanbanColumnScroll?: IBaseRenderContext['kanbanColumnScroll'];
    kanbanLaneScrollbarVisibleKeys?: IBaseRenderContext['kanbanLaneScrollbarVisibleKeys'];
    kanbanLaneScrollbarHoverKey?: IBaseRenderContext['kanbanLaneScrollbarHoverKey'];
    kanbanLaneScrollbarDraggingKey?: IBaseRenderContext['kanbanLaneScrollbarDraggingKey'];
    kanbanCardDrag?: IBaseRenderContext['kanbanCardDrag'];
    kanbanHoverRecordId?: IBaseRenderContext['kanbanHoverRecordId'];
    kanbanHoverAddRecordGroupKey?: IBaseRenderContext['kanbanHoverAddRecordGroupKey'];
    kanbanHoverAddGroup?: IBaseRenderContext['kanbanHoverAddGroup'];
    kanbanAddRecordLabel?: IBaseRenderContext['kanbanAddRecordLabel'];
    kanbanMoveRecordLabel?: IBaseRenderContext['kanbanMoveRecordLabel'];
    galleryHoverRecordId?: IBaseRenderContext['galleryHoverRecordId'];
    galleryCardDrag?: IBaseRenderContext['galleryCardDrag'];
    gallerySearchRecordIds?: IBaseRenderContext['gallerySearchRecordIds'];
    gallerySearchActiveRecordId?: IBaseRenderContext['gallerySearchActiveRecordId'];
    gridRowHeight?: IBaseRenderContext['gridRowHeight'];
    gridFieldIndicators?: IBaseRenderContext['gridFieldIndicators'];
    gridStatLabels?: IBaseRenderContext['gridStatLabels'];
    conditionalColoringRules?: IBaseRenderContext['conditionalColoringRules'];
    summaryBarHovered?: boolean;
    scrollbar?: IBaseRenderContext['scrollbar'];
    kanbanSearchRecordIds?: IBaseRenderContext['kanbanSearchRecordIds'];
    kanbanSearchActiveRecordId?: IBaseRenderContext['kanbanSearchActiveRecordId'];
    calendarAnchorDate?: IBaseRenderContext['calendarAnchorDate'];
    calendarSearchRecordIds?: IBaseRenderContext['calendarSearchRecordIds'];
    calendarSearchActiveRecordId?: IBaseRenderContext['calendarSearchActiveRecordId'];
    calendarAllDayScrollY?: IBaseRenderContext['calendarAllDayScrollY'];
    calendarHover?: IBaseRenderContext['calendarHover'];
    calendarEventDrag?: IBaseRenderContext['calendarEventDrag'];
    calendarKeyboardFocus?: IBaseRenderContext['calendarKeyboardFocus'];
    calendarTodayLabel?: IBaseRenderContext['calendarTodayLabel'];
    calendarDayLabel?: IBaseRenderContext['calendarDayLabel'];
    calendarWeekLabel?: IBaseRenderContext['calendarWeekLabel'];
    calendarMonthLabel?: IBaseRenderContext['calendarMonthLabel'];
    calendarMoreLabel?: IBaseRenderContext['calendarMoreLabel'];
    ganttSearchRecordIds?: IBaseRenderContext['ganttSearchRecordIds'];
    ganttSearchActiveRecordId?: IBaseRenderContext['ganttSearchActiveRecordId'];
    ganttHover?: IBaseRenderContext['ganttHover'];
    ganttBarDrag?: IBaseRenderContext['ganttBarDrag'];
    ganttFieldsLabel?: IBaseRenderContext['ganttFieldsLabel'];
    ganttTodayLabel?: IBaseRenderContext['ganttTodayLabel'];
    ganttWeekLabel?: IBaseRenderContext['ganttWeekLabel'];
    ganttMonthLabel?: IBaseRenderContext['ganttMonthLabel'];
    ganttQuarterLabel?: IBaseRenderContext['ganttQuarterLabel'];
    ganttYearLabel?: IBaseRenderContext['ganttYearLabel'];
}
export interface IBaseScene {
    unitId: string;
    viewport: BaseViewport;
}
export declare class BaseSceneHost<TProjection extends BaseViewProjection = BaseViewProjection> extends Disposable implements IBaseScene {
    private readonly _options;
    readonly unitId: string;
    readonly tableId: string;
    readonly viewId: string;
    readonly component: BaseCanvasRenderComponent;
    private _rect;
    private _context;
    private _projection;
    constructor(_options: IBaseSceneHostMountOptions<TProjection>);
    get viewport(): BaseViewport;
    get rect(): Rect;
    get projection(): TProjection | null;
    updateProjection(projection: TProjection): void;
    updateContext(patch: Partial<IBaseRenderContext>): void;
    resize(rect: Rect): void;
    hitTest(x: number, y: number): BaseHitTestResult | null;
    markDirty(): void;
    dispose(): void;
    private _createContext;
}
export declare class BaseSubScene<TProjection extends BaseViewProjection = BaseViewProjection> extends Disposable implements IBaseScene {
    private readonly _options;
    readonly unitId: string;
    readonly tableId: string;
    readonly viewId: string;
    readonly viewer: SceneViewer;
    readonly scene: Scene;
    readonly engineViewport: Viewport;
    readonly component: BaseCanvasRenderComponent;
    private _rect;
    private _context;
    private _projection;
    private readonly _parentScene;
    constructor(_options: IBaseSubSceneMountOptions<TProjection>);
    get viewport(): BaseViewport;
    get rect(): Rect;
    get projection(): TProjection | null;
    updateProjection(projection: TProjection): void;
    updateContext(patch: Partial<IBaseRenderContext>): void;
    resize(rect: Rect): void;
    hitTest(x: number, y: number): BaseHitTestResult | null;
    markDirty(): void;
    dispose(): void;
    private _createContext;
}
