import type { BackgroundVariant, Edge, Node, ReactFlowInstance, ReactFlowProps } from '../../xyflow/react.ts';
import type { ReactNode } from 'react';
import type { SupportedLocale } from '../../../i18n';
import type { ToolbarActionHandler } from '../../schema/toolbar';
export interface BaseCanvasFitViewOptions {
    padding?: number | {
        top: number;
        right: number;
        bottom: number;
        left: number;
    };
    duration?: number;
    minZoom?: number;
    maxZoom?: number;
}
export interface BaseCanvasProps<NodeType extends Node = Node, EdgeType extends Edge = Edge> extends ReactFlowProps<NodeType, EdgeType> {
    mode?: 'design' | 'readonly' | 'view';
    children?: ReactNode;
    showBackground?: boolean;
    backgroundColor?: string;
    backgroundSecondaryColor?: string;
    backgroundVariant?: BackgroundVariant;
    backgroundGap?: number;
    backgroundSize?: number;
    initialAutoLayout?: () => Promise<void> | void;
    maintainNodesInView?: string[];
    panShortcutTeachingUIMessage?: string;
    fitViewOptions?: BaseCanvasFitViewOptions;
    onToolbarAction?: ToolbarActionHandler;
    breakpoints?: Set<string>;
    isDarkMode?: boolean;
    locale?: SupportedLocale;
}
export interface EnsureNodesInViewOptions {
    padding?: number;
    duration?: number;
    minZoom?: number;
    maxZoom?: number;
    maintainZoom?: boolean;
}
export interface BaseCanvasRef<NodeType extends Node = Node, EdgeType extends Edge = Edge> {
    ensureNodesInView(nodeIds: string[], options?: EnsureNodesInViewOptions): void;
    ensureAllNodesInView(options?: EnsureNodesInViewOptions): void;
    centerNode(nodeId: string, options?: EnsureNodesInViewOptions): void;
    reactFlow: ReactFlowInstance<NodeType, EdgeType> | undefined;
}
//# sourceMappingURL=BaseCanvas.types.d.ts.map