import { type ReactNode } from "react";
export interface FlowToolbarProps {
    children?: ReactNode;
    /** "left" / "right" pin to side and stack vertically; "top" / "bottom" stack horizontally. */
    placement?: "left" | "top" | "right" | "bottom";
    className?: string;
}
export declare function FlowToolbar({ children, placement, className }: FlowToolbarProps): import("react/jsx-runtime").JSX.Element;
export interface FlowToolbarButtonProps {
    icon: ReactNode;
    label: string;
    onClick?: () => void;
    active?: boolean;
    disabled?: boolean;
    danger?: boolean;
    /** Optional keyboard shortcut hint — shown in the tooltip. */
    shortcut?: string;
    /** When provided, acts as the hover-tooltip text. Defaults to `label`. */
    tooltip?: string;
    className?: string;
}
export declare function FlowToolbarButton({ icon, label, onClick, active, disabled, danger, shortcut, tooltip, className, }: FlowToolbarButtonProps): import("react/jsx-runtime").JSX.Element;
export interface FlowToolbarDividerProps {
    className?: string;
}
export declare function FlowToolbarDivider({ className }: FlowToolbarDividerProps): import("react/jsx-runtime").JSX.Element;
export interface FlowToolbarZoomProps {
    zoom: number;
    onZoomIn?: () => void;
    onZoomOut?: () => void;
    onFit?: () => void;
    onReset?: () => void;
    className?: string;
}
export declare const FlowToolbarIcons: {
    save: import("react/jsx-runtime").JSX.Element;
    run: import("react/jsx-runtime").JSX.Element;
    stop: import("react/jsx-runtime").JSX.Element;
    lock: import("react/jsx-runtime").JSX.Element;
    unlock: import("react/jsx-runtime").JSX.Element;
    reset: import("react/jsx-runtime").JSX.Element;
    undo: import("react/jsx-runtime").JSX.Element;
    redo: import("react/jsx-runtime").JSX.Element;
    drawerOpen: import("react/jsx-runtime").JSX.Element;
    drawerClose: import("react/jsx-runtime").JSX.Element;
    settings: import("react/jsx-runtime").JSX.Element;
    history: import("react/jsx-runtime").JSX.Element;
    debug: import("react/jsx-runtime").JSX.Element;
    zoomIn: import("react/jsx-runtime").JSX.Element;
    zoomOut: import("react/jsx-runtime").JSX.Element;
    zoomReset: import("react/jsx-runtime").JSX.Element;
    fit: import("react/jsx-runtime").JSX.Element;
    /**
     * Auto-layout glyph — a small directed-graph diagram (three connected
     * nodes) that reads as "graph layout". Lives inside this barrel so the
     * `<FlowToolbarAutoLayout>` button doesn't need an icon-pack import.
     * If the design system later adds a canonical icon to `@octaviaflow/icons`,
     * this can be swapped without breaking consumers.
     */
    autoLayout: import("react/jsx-runtime").JSX.Element;
    /** Checkmark — short-lived success indicator on the save button. */
    check: import("react/jsx-runtime").JSX.Element;
    /** Filled exclamation — error indicator on the save button. */
    error: import("react/jsx-runtime").JSX.Element;
};
export type FlowToolbarSaveState = "idle" | "saving" | "success" | "error";
export interface FlowToolbarSaveProps {
    /**
     * Explicit state. When unset, the component infers from
     * `loading` + `lastSavedAt`: `loading` → "saving"; a `lastSavedAt`
     * timestamp newer than the last save attempt → "success" (then snaps
     * back to "idle" after `successDisplayMs`); `error` → "error".
     */
    state?: FlowToolbarSaveState;
    /** Convenience boolean — `true` ↔ `state === "saving"`. */
    loading?: boolean;
    /**
     * Last successful save timestamp (epoch ms or ISO string). When this
     * value changes while the button is in `saving`, the component flips
     * into `success` for `successDisplayMs` and then settles back to
     * `idle`.
     */
    lastSavedAt?: number | string;
    /** Error indicator — flips the button into the error visual state. */
    error?: boolean | string;
    /** How long to flash the success checkmark before reverting. Default 1500 ms. */
    successDisplayMs?: number;
    onSave?: () => void;
    /** Custom label override — defaults to "Save". */
    label?: string;
    /** Optional keyboard shortcut hint ("⌘S"). */
    shortcut?: string;
    /** Show a text label next to the icon (for top/bottom toolbars). */
    showLabel?: boolean;
    className?: string;
}
export declare function FlowToolbarSave({ state, loading, lastSavedAt, error, successDisplayMs, onSave, label, shortcut, showLabel, className, }: FlowToolbarSaveProps): import("react/jsx-runtime").JSX.Element;
export interface FlowToolbarRunProps {
    /** When true, the button switches to Stop mode. */
    running?: boolean;
    /** Disable the button (e.g. while validating). */
    disabled?: boolean;
    onRun?: () => void;
    onStop?: () => void;
    shortcut?: string;
    className?: string;
}
export declare function FlowToolbarRun({ running, disabled, onRun, onStop, shortcut, className, }: FlowToolbarRunProps): import("react/jsx-runtime").JSX.Element;
export interface FlowToolbarUndoProps {
    canUndo?: boolean;
    onUndo?: () => void;
    shortcut?: string;
    className?: string;
}
export declare function FlowToolbarUndo({ canUndo, onUndo, shortcut, className, }: FlowToolbarUndoProps): import("react/jsx-runtime").JSX.Element;
export interface FlowToolbarRedoProps {
    canRedo?: boolean;
    onRedo?: () => void;
    shortcut?: string;
    className?: string;
}
export declare function FlowToolbarRedo({ canRedo, onRedo, shortcut, className, }: FlowToolbarRedoProps): import("react/jsx-runtime").JSX.Element;
export interface FlowToolbarAutoLayoutProps {
    onAutoLayout?: () => void;
    disabled?: boolean;
    shortcut?: string;
    className?: string;
}
export declare function FlowToolbarAutoLayout({ onAutoLayout, disabled, shortcut, className, }: FlowToolbarAutoLayoutProps): import("react/jsx-runtime").JSX.Element;
export interface FlowToolbarFitViewProps {
    onFit?: () => void;
    disabled?: boolean;
    shortcut?: string;
    className?: string;
}
export declare function FlowToolbarFitView({ onFit, disabled, shortcut, className, }: FlowToolbarFitViewProps): import("react/jsx-runtime").JSX.Element;
export interface FlowToolbarResetProps {
    onReset?: () => void;
    disabled?: boolean;
    shortcut?: string;
    className?: string;
}
export declare function FlowToolbarReset({ onReset, disabled, shortcut, className, }: FlowToolbarResetProps): import("react/jsx-runtime").JSX.Element;
export declare function FlowToolbarZoom({ zoom, onZoomIn, onZoomOut, onFit, onReset, className, }: FlowToolbarZoomProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=FlowToolbar.d.ts.map