import type { CalendarProjection, GalleryProjection, GanttProjection, GridProjection, KanbanProjection, ProjectedField, ProjectedRow, Viewport } from '@univerjs/core';
import type { BaseGridFieldIndicator, IBaseCalendarEventDragState, IBaseCalendarKeyboardFocusState, IBaseCanvasScrollbarState, IBaseConditionalColorRule, IBaseGalleryCardDragState, IBaseGanttBarDragState, IBaseGridAddRecordHoverState, IBaseGridFieldDragState, IBaseGridFillPreviewState, IBaseGridRowDragState, IBaseGridSelectionState, IBaseGridVirtualRowState, IBaseKanbanCardDragState } from '../render/base-view-render-controller';
import type { CanvasDrawCommand, IBaseCanvasHitRegion } from '../render/canvas-draw-command';
export declare const BASE_CANVAS_COLORS: {
    background: string;
    header: string;
    muted: string;
    text: string;
    line: string;
    softLine: string;
    selected: string;
    accent: string;
    accentSoft: string;
    card: string;
    lane: string;
    calendar: string;
};
export declare const GRID_HEADER_HEIGHT = 40;
export declare const GRID_ROW_HEIGHT = 42;
export declare const GRID_GROUP_ROW_HEIGHT = 34;
export declare const GRID_ADD_RECORD_ROW_HEIGHT = 34;
export declare const GRID_GROUP_GAP_HEIGHT = 10;
export declare const GRID_SUMMARY_HEIGHT = 42;
export declare const GRID_DEFAULT_COLUMN_WIDTH = 160;
export declare const GRID_ADD_FIELD_COLUMN_WIDTH = 88;
export declare const GRID_CELL_PADDING = 10;
export declare const GRID_ROW_HEADER_WIDTH = 56;
export declare function resolveGridRowHeight(rowHeight?: unknown): number;
export declare function clampVirtualRecordRowY(input: {
    actualY: number;
    bodyTop: number;
    bodyBottom: number;
    rowHeight: number;
}): {
    y: number;
    pinned: boolean;
    edge: 'top' | 'bottom' | null;
};
export declare function resolveVirtualRecordWarningLabelY(input: {
    rowY: number;
    rowHeight: number;
    bodyTop: number;
    bodyBottom: number;
    labelHeight: number;
    gap?: number;
}): number;
export declare function getGridProjectionBodyHeight(projection: GridProjection | GanttProjection, collapsedGroupPaths?: ReadonlySet<string>, rowHeight?: number): number;
export declare function getGridProjectionVisibleRows(projection: GridProjection | GanttProjection, collapsedGroupPaths?: ReadonlySet<string>): ProjectedRow[];
export interface IBaseProjectedRowLayoutItem {
    kind: 'group-header' | 'group-gap' | 'record' | 'add-record';
    recordId?: string;
    groupPath?: string;
    groupKey?: string;
    groupLevel?: number;
    groupLabel?: string;
    fieldId?: string;
    rowNumber?: number;
    y: number;
    height: number;
}
export declare function buildBaseProjectedRowLayout(projection: GridProjection | GanttProjection, collapsedGroupPaths?: ReadonlySet<string>, rowHeight?: number): IBaseProjectedRowLayoutItem[];
export declare function pushBaseBackground(commands: CanvasDrawCommand[], viewport: Viewport): void;
export declare function drawGridSurface(commands: CanvasDrawCommand[], hitRegions: IBaseCanvasHitRegion[], projection: GridProjection | GanttProjection, ctx: {
    tableId: string;
    viewId: string;
    x: number;
    y: number;
    width: number;
    height: number;
    selectionType: 'grid-cell' | 'gantt-cell';
    collapsedGroupPaths?: ReadonlySet<string>;
    gridFillPreview?: IBaseGridFillPreviewState | null;
    gridColumnResizeDragX?: number | null;
    gridFreezeDragX?: number | null;
    gridFreezeHoverY?: number | null;
    gridFieldDrag?: IBaseGridFieldDragState | null;
    gridHoverAddField?: boolean;
    gridHoverAddRecordRow?: IBaseGridAddRecordHoverState | null;
    gridHoverFieldId?: string | null;
    gridHoverFieldMenuFieldId?: string | null;
    gridHoverFieldDescriptionFieldId?: string | null;
    gridHoverCellRecordId?: string | null;
    gridHoverCellFieldId?: string | null;
    gridHoverLinkActionRecordId?: string | null;
    gridHoverLinkActionFieldId?: string | null;
    gridHoverOpenRecordId?: string | null;
    gridSelectOptionRemoveHover?: {
        viewId: string;
        recordId: string;
        fieldId: string;
        optionValue: string;
    } | null;
    gridAttachmentDropTarget?: {
        viewId: string;
        recordId: string;
        fieldId: string;
        fileName?: string;
    } | null;
    gridHoverRowHeaderRecordId?: string | null;
    gridHoverRecordId?: string | null;
    gridVirtualRows?: IBaseGridVirtualRowState[];
    gridRowDrag?: IBaseGridRowDragState | null;
    gridOpenRecordId?: string | null;
    gridOpenRecordLabel?: string;
    gridCloseRecordLabel?: string;
    gridAddRecordLabel?: string;
    gridRecordLabel?: string;
    gridRecordCountLabel?: string;
    gridCalculateLabel?: string;
    gridAttachmentDropLabel?: string;
    gridRatingHover?: {
        viewId: string;
        recordId: string;
        fieldId: string;
        value: number;
        x: number;
        y: number;
    } | null;
    gridRowHeight?: number;
    gridFieldIndicators?: Record<string, BaseGridFieldIndicator[]>;
    gridStatLabels?: Record<string, string>;
    gridSelection?: IBaseGridSelectionState | null;
    gridSearchMatches?: Array<{
        recordId: string;
        fieldId: string;
    }>;
    gridSearchActiveMatch?: {
        recordId: string;
        fieldId: string;
    } | null;
    conditionalColoringRules?: IBaseConditionalColorRule[];
    summaryBarHovered?: boolean;
    scrollX?: number;
    scrollY?: number;
    overscanRows?: number;
    scrollbar?: IBaseCanvasScrollbarState | null;
    showAddFieldColumn?: boolean;
}): void;
export declare function getBaseMultiSelectVirtualOverlayHeight(value: unknown, maxWidth: number, rowHeight: number): number;
export declare function getKanbanLaneMaxScroll(projection: KanbanProjection, laneKey: string, viewportHeight: number): number;
export declare function getKanbanCardScrollTarget(projection: KanbanProjection, recordId: string, viewportWidth: number, viewportHeight: number, options?: {
    currentScrollX?: number;
    currentLaneScrollY?: number;
}): {
    laneKey: string;
    scrollX: number;
    laneScrollY: number;
} | null;
export declare function drawKanban(commands: CanvasDrawCommand[], hitRegions: IBaseCanvasHitRegion[], projection: KanbanProjection, ctx: {
    tableId: string;
    viewId: string;
    viewport: Viewport;
    scrollX?: number;
    scrollY?: number;
    kanbanColumnScroll?: Record<string, number>;
    kanbanLaneScrollbarVisibleKeys?: ReadonlySet<string>;
    kanbanLaneScrollbarHoverKey?: string | null;
    kanbanLaneScrollbarDraggingKey?: string | null;
    kanbanCardDrag?: IBaseKanbanCardDragState | null;
    kanbanHoverRecordId?: string | null;
    kanbanHoverAddRecordGroupKey?: string | null;
    kanbanHoverAddGroup?: boolean;
    kanbanAddRecordLabel?: string;
    kanbanMoveRecordLabel?: string;
    kanbanSearchRecordIds?: string[];
    kanbanSearchActiveRecordId?: string | null;
    gridRatingHover?: {
        viewId: string;
        recordId: string;
        fieldId: string;
        value: number;
        x: number;
        y: number;
    } | null;
    scrollbar?: IBaseCanvasScrollbarState | null;
}): void;
export declare function drawCalendar(commands: CanvasDrawCommand[], hitRegions: IBaseCanvasHitRegion[], projection: CalendarProjection, ctx: {
    tableId: string;
    viewId: string;
    viewport: Viewport;
    anchorMs?: number;
    searchRecordIds?: string[];
    searchActiveRecordId?: string | null;
    scrollY?: number;
    allDayScrollY?: number;
    scrollbar?: IBaseCanvasScrollbarState | null;
    hover?: {
        type: string;
        recordId?: string | null;
        mode?: 'day' | 'week' | 'month' | null;
        direction?: 'prev' | 'next' | null;
        dateMs?: number | null;
        edge?: 'start' | 'end' | null;
    } | null;
    calendarEventDrag?: IBaseCalendarEventDragState | null;
    keyboardFocus?: IBaseCalendarKeyboardFocusState | null;
    calendarTodayLabel?: string;
    calendarDayLabel?: string;
    calendarWeekLabel?: string;
    calendarMonthLabel?: string;
    calendarMoreLabel?: (count: number) => string;
}): void;
export declare function drawGantt(commands: CanvasDrawCommand[], hitRegions: IBaseCanvasHitRegion[], projection: GanttProjection, ctx: {
    tableId: string;
    viewId: string;
    viewport: Viewport;
    collapsedGroupPaths?: ReadonlySet<string>;
    gridHoverAddRecordRow?: IBaseGridAddRecordHoverState | null;
    gridHoverFieldId?: string | null;
    gridHoverFieldMenuFieldId?: string | null;
    gridHoverFieldDescriptionFieldId?: string | null;
    gridHoverCellRecordId?: string | null;
    gridHoverCellFieldId?: string | null;
    gridHoverLinkActionRecordId?: string | null;
    gridHoverLinkActionFieldId?: string | null;
    gridHoverOpenRecordId?: string | null;
    gridHoverRowHeaderRecordId?: string | null;
    gridHoverRecordId?: string | null;
    gridVirtualRows?: IBaseGridVirtualRowState[];
    gridRatingHover?: {
        viewId: string;
        recordId: string;
        fieldId: string;
        value: number;
        x: number;
        y: number;
    } | null;
    gridRowDrag?: IBaseGridRowDragState | null;
    gridRowHeight?: number;
    gridFieldIndicators?: Record<string, BaseGridFieldIndicator[]>;
    gridSelection?: IBaseGridSelectionState | null;
    gridAddRecordLabel?: string;
    gridRecordLabel?: string;
    gridRecordCountLabel?: string;
    gridCalculateLabel?: string;
    gridAttachmentDropLabel?: string;
    ganttFieldsLabel?: string;
    ganttTodayLabel?: string;
    ganttWeekLabel?: string;
    ganttMonthLabel?: string;
    ganttQuarterLabel?: string;
    ganttYearLabel?: string;
    conditionalColoringRules?: IBaseConditionalColorRule[];
    scrollX?: number;
    scrollY?: number;
    ganttLeftPaneScrollX?: number;
    overscanRows?: number;
    scrollbar?: IBaseCanvasScrollbarState | null;
    ganttSearchRecordIds?: string[];
    ganttSearchActiveRecordId?: string | null;
    ganttHover?: {
        type: string;
        recordId?: string | null;
        scale?: 'week' | 'month' | 'quarter' | 'year' | null;
        direction?: 'prev' | 'next' | null;
        start?: number | null;
        end?: number | null;
    } | null;
    ganttBarDrag?: IBaseGanttBarDragState | null;
}): void;
export declare function getGalleryProjectionBodyHeight(projection: GalleryProjection, viewportWidth: number): number;
export declare function getCalendarProjectionBodyHeight(projection: CalendarProjection, viewport: Viewport, anchorMs?: number): number;
export declare function getGalleryCardScrollTarget(projection: GalleryProjection, recordId: string, viewportWidth: number, viewportHeight: number, options?: {
    currentScrollY?: number;
}): {
    scrollY: number;
} | null;
export declare function drawGallery(commands: CanvasDrawCommand[], hitRegions: IBaseCanvasHitRegion[], projection: GalleryProjection, ctx: {
    tableId: string;
    viewId: string;
    viewport: Viewport;
    scrollY?: number;
    galleryHoverRecordId?: string | null;
    galleryCardDrag?: IBaseGalleryCardDragState | null;
    gallerySearchRecordIds?: string[];
    gallerySearchActiveRecordId?: string | null;
    gridRatingHover?: {
        viewId: string;
        recordId: string;
        fieldId: string;
        value: number;
        x: number;
        y: number;
    } | null;
    scrollbar?: IBaseCanvasScrollbarState | null;
}): void;
export declare function getFieldWidth(field: ProjectedField): number;
export declare function cellText(value: unknown): string;
