import React from 'react'; import { css } from 'styled-components'; declare const gridKeyOrder: readonly ["header", "left", "component", "right", "footer"]; declare type GridPositionKey = typeof gridKeyOrder[number]; declare const fixedKeyOrder: readonly ["top", "left", "bottom", "right"]; declare type FixedKey = typeof fixedKeyOrder[number]; declare type Length = string | number; declare type Dimension = Length | undefined; declare type GridLine = string | number | undefined; declare type GridDimension = Dimension | Dimension[]; declare type ZIndex = { zIndex?: number; }; interface FixedPosition extends ZIndex { fixed: FixedKey; size: number; } interface GridPosition { grid?: GridPositionKey; width?: GridDimension; height?: GridDimension; row?: GridLine; rowSpan?: GridLine; rowEnd?: GridLine; col?: GridLine; colSpan?: GridLine; colEnd?: GridLine; } export declare type Position = FixedPosition | GridPosition; declare type Sizes = { width?: Length; height?: Length; }; declare type FixedBox = { [K in FixedKey]?: Length; } & Sizes & ZIndex; interface AddAction { type: 'add'; role: string; position: Position; order: number; } interface RemoveAction { type: 'remove'; role: string; } declare type LayoutAction = AddAction | RemoveAction; declare type StyleList = (string | ReturnType | FixedBox)[]; interface BaseContext { styles: StyleList; classes: Record; } interface LayoutCtx extends BaseContext { dispatch: React.Dispatch; } export declare const LayoutContext: React.Context; export declare const useLayout: (role: string, position: Position, order?: number) => string; declare const useGridLayout: () => LayoutCtx; export default useGridLayout;