import { BaseCard } from '../shared/base';
/**
 * Responsive grid breakpoints accepted by `breakpoints` and `cols`.
 * Matches the vue-grid-layout convention used by the v2 renderer.
 */
export type GridBreakpoint = "xs" | "sm" | "md" | "lg" | "xl" | "xxl" | "xxs";
/**
 * A single item inside a `gridLayout`. `i` references the ID of the
 * nested card/element this slot renders.
 */
export interface GridItem {
    /** Column position. */
    x: number;
    /** Row position. */
    y: number;
    /** Column span. */
    w: number;
    /** Row span. */
    h: number;
    /** ID of the card/element this slot renders. */
    i: string;
    /** Per-item display options. */
    options?: {
        displayBorder?: boolean;
        [key: string]: unknown;
    };
    minH?: number;
    maxH?: number;
    minW?: number;
    maxW?: number;
    /** When true, this item is locked and cannot be moved or resized. */
    static?: boolean;
}
/**
 * The full layout map keyed by breakpoint. Each breakpoint owns its
 * own ordering so the grid can reflow on resize.
 */
export type GridLayout = {
    [key in GridBreakpoint]?: GridItem[];
};
/**
 * `grid-view` card — a responsive vue-grid-layout style grid of items.
 * Each `GridItem.i` references the ID of another card/element resolved
 * from the page's `cards` / `elements` maps and rendered with a
 * per-item template.
 */
export interface GridViewCard extends BaseCard<"grid-view"> {
    cardType: "grid-view";
    /** Per-breakpoint item layout map. */
    gridLayout?: GridLayout;
    /** Auto-grow the container to fit its contents. */
    autoResizeHeight?: boolean;
    /** Pixel height of a single grid row. */
    rowHeight?: number;
    /** Horizontal and vertical gap between items, in pixels. */
    margin?: [number, number];
    /** Padding around the entire grid container, in pixels. */
    containerPadding?: [number, number];
    /** Enable drag-to-reorder. */
    isDraggable?: boolean;
    /** Enable resize handles on each item. */
    isResizable?: boolean;
    /** Breakpoint width thresholds in pixels. */
    breakpoints?: Partial<Record<GridBreakpoint, number>>;
    /** Column count per breakpoint. */
    cols?: Partial<Record<GridBreakpoint, number>>;
}
export declare const GridViewCardDefaults: {
    readonly cardType: "grid-view";
    readonly showCard: true;
    readonly columns: 12;
    readonly columnsSm: 12;
    readonly columnsMd: 12;
    readonly columnsLg: 12;
    readonly columnsXl: 12;
    readonly autoResizeHeight: true;
    readonly rowHeight: 150;
    readonly margin: [10, 10];
    readonly containerPadding: [10, 10];
    readonly isDraggable: false;
    readonly isResizable: false;
    readonly breakpoints: {
        readonly lg: 1200;
        readonly md: 996;
        readonly sm: 768;
        readonly xs: 480;
        readonly xxs: 0;
    };
    readonly cols: {
        readonly lg: 12;
        readonly md: 10;
        readonly sm: 6;
        readonly xs: 4;
        readonly xxs: 2;
    };
    readonly gridLayout: {
        readonly xs: [];
    };
};
export declare const GridViewCardMetadata: {
    readonly icon: "grid";
    readonly displayLabel: "Grid View";
    readonly elementCategory: "display";
    readonly description: "A grid view to display dashboard elements in a locking grid format.";
};
export declare const GridViewCardEditConfig: {
    readonly title: {
        readonly type: "input.text";
        readonly label: "Title";
        readonly columns: 12;
        readonly section: "configuration";
    };
    readonly autoResizeHeight: {
        readonly type: "boolean.switch";
        readonly defaultValue: true;
        readonly label: "Auto Resize Height";
        readonly columns: 6;
        readonly section: "layout";
    };
    readonly rowHeight: {
        readonly type: "input.text";
        readonly contentType: "number";
        readonly defaultValue: 150;
        readonly label: "Row Height (px)";
        readonly columns: 6;
        readonly section: "layout";
    };
    readonly isDraggable: {
        readonly type: "boolean.switch";
        readonly defaultValue: false;
        readonly label: "Allow Drag to Reorder";
        readonly columns: 6;
        readonly section: "configuration";
    };
    readonly isResizable: {
        readonly type: "boolean.switch";
        readonly defaultValue: false;
        readonly label: "Allow Resize";
        readonly columns: 6;
        readonly section: "configuration";
    };
    readonly showCard: {
        readonly type: "boolean.switch";
        readonly defaultValue: true;
        readonly label: "Show Card Chrome";
        readonly columns: 12;
        readonly section: "layout";
    };
};
//# sourceMappingURL=GridViewCard.d.ts.map