import React from 'react';
import { ArrayLayoutProps, ControlElement, JsonFormsRendererRegistryEntry, JsonFormsState, JsonSchema, UISchemaElement, UISchemaTester } from '@jsonforms/core';
import { AnyAction, Dispatch } from 'redux';
interface MaterialArrayLayoutState {
    expanded: string | boolean;
}
export declare class MaterialArrayLayout extends React.Component<ArrayLayoutProps, MaterialArrayLayoutState> {
    state: MaterialArrayLayoutState;
    innerCreateDefaultValue: () => {};
    handleChange: (panel: string) => (_event: any, expanded: boolean) => void;
    isExpanded: (index: number) => boolean;
    render(): JSX.Element;
}
interface OwnPropsOfExpandPanel {
    index: number;
    path: string;
    uischema: ControlElement;
    schema: JsonSchema;
    expanded: boolean;
    renderers?: JsonFormsRendererRegistryEntry[];
    handleExpansion(panel: string): (event: any, expanded: boolean) => void;
}
interface StatePropsOfExpandPanel extends OwnPropsOfExpandPanel {
    childLabel: string;
    childPath: string;
    uischemas: {
        tester: UISchemaTester;
        uischema: UISchemaElement;
    }[];
}
/**
 * Map state to control props.
 * @param state the store's state
 * @param ownProps any own props
 * @returns {StatePropsOfControl} state props for a control
 */
export declare const mapStateToExpandPanelProps: (state: JsonFormsState, ownProps: OwnPropsOfExpandPanel) => StatePropsOfExpandPanel;
/**
 * Dispatch props of a table control
 */
export interface DispatchPropsOfExpandPanel {
    removeItems(path: string, toDelete: number[]): () => void;
}
/**
 * Maps state to dispatch properties of an expand pandel control.
 *
 * @param dispatch the store's dispatch method
 * @returns {DispatchPropsOfArrayControl} dispatch props of an expand panel control
 */
export declare const mapDispatchToExpandPanelProps: (dispatch: Dispatch<AnyAction>) => DispatchPropsOfExpandPanel;
export interface ExpandPanelProps extends StatePropsOfExpandPanel, DispatchPropsOfExpandPanel {
}
export {};
