import { Component, ReactNode } from 'react';
import { ColumnCtx, ColumnDivision } from './column';
export interface ColumnLayoutCtx<T extends ColumnDivision> extends ColumnCtx<T> {
    width: number;
    grainSizes?: string[];
    grainsizeScale?: (d: string) => number;
    xScale: any;
    widthForDivision: (d: ColumnDivision) => number;
}
declare const ColumnLayoutContext: import('react').Context<ColumnLayoutCtx<ColumnDivision>>;
export interface ColumnLayoutProviderProps<T extends ColumnDivision> extends Partial<ColumnCtx<T>> {
    grainSizes?: string[];
    grainsizeScale?: (d: string) => number;
    width: number;
    xScale?: any;
    children?: ReactNode;
}
declare function ColumnLayoutProvider<T extends ColumnDivision>({ children, width, grainSizes, grainsizeScale, xScale, }: ColumnLayoutProviderProps<T>): import('react').FunctionComponentElement<import('react').ProviderProps<ColumnLayoutCtx<ColumnDivision>>>;
export interface CrossAxisLayoutProviderProps {
    width: number;
    domain: number[];
    range?: number[];
    children?: ReactNode;
}
declare class CrossAxisLayoutProvider extends Component<CrossAxisLayoutProviderProps> {
    static contextType: import('react').Context<ColumnCtx<ColumnDivision>>;
    context: ColumnCtx<ColumnDivision>;
    render(): import('react').FunctionComponentElement<ColumnLayoutProviderProps<ColumnDivision>>;
}
export type GrainsizeLayoutProps = {
    grainSizes: string[];
    children?: ReactNode;
    width?: number;
    grainsizeScaleStart?: number;
    grainsizeScaleRange?: [number, number];
    tickPositions?: number[];
};
declare function GrainsizeLayoutProvider({ width, grainSizes, grainsizeScaleStart, grainsizeScaleRange, tickPositions, children, }: GrainsizeLayoutProps): import('react').FunctionComponentElement<ColumnLayoutProviderProps<ColumnDivision>>;
export declare function useColumnLayout(): ColumnLayoutCtx<ColumnDivision>;
export { ColumnLayoutContext, ColumnLayoutProvider, CrossAxisLayoutProvider, GrainsizeLayoutProvider, };
