import React from 'react';
import { ConditionalProperty, Marker, ObjectField, ObjectSchemaTypeWithOptions, Path, SchemaType } from '@sanity/types';
import { FormFieldPresence } from '@sanity/base/presence';
import PatchEvent from './PatchEvent';
import { Props as InputProps } from './inputs/types';
interface FormBuilderInputProps {
    value: unknown;
    type: SchemaType;
    onChange: (event: PatchEvent) => void;
    onFocus: (path: Path) => void;
    onBlur: () => void;
    readOnly?: ConditionalProperty;
    _internal_parent?: Record<string, unknown> | undefined;
    presence?: FormFieldPresence[];
    focusPath: Path;
    markers: Marker[];
    compareValue?: unknown;
    inputComponent?: React.ComponentType<InputProps>;
    level: number;
    isRoot?: boolean;
    path: Path;
    filterField?: (type: ObjectSchemaTypeWithOptions, field: ObjectField) => boolean;
    onKeyUp?: (ev: React.KeyboardEvent) => void;
    onKeyPress?: (ev: React.KeyboardEvent) => void;
}
export declare class FormBuilderInput extends React.Component<FormBuilderInputProps> {
    static contextTypes: {
        presence: () => any;
        formBuilder: () => any;
        getValuePath: () => any;
    };
    static childContextTypes: {
        getValuePath: () => any;
    };
    static defaultProps: {
        focusPath: Path;
        path: Path;
        markers: import("@sanity/types/src").ValidationMarker[];
    };
    _element: HTMLDivElement | null;
    _input: FormBuilderInput | HTMLDivElement | null;
    scrollTimeout: number;
    getValuePath: () => any;
    getChildContext(): {
        getValuePath: () => any;
    };
    componentDidMount(): void;
    shouldComponentUpdate(nextProps: FormBuilderInputProps): boolean;
    componentDidUpdate(prevProps: FormBuilderInputProps): void;
    componentWillUnmount(): void;
    resolveInputComponent(type: SchemaType): any;
    setInput: (component: FormBuilderInput | HTMLDivElement | null) => void;
    focus(): void;
    handleChange: (patchEvent: PatchEvent) => void;
    handleFocus: (nextPath: Path) => void;
    handleBlur: () => void;
    getChildFocusPath(): Path;
    render(): React.JSX.Element;
}
export {};
//# sourceMappingURL=FormBuilderInput.d.ts.map