import { ControlElement, UISchemaElement, JsonSchema, JsonFormsRendererRegistryEntry, JsonFormsCellRendererRegistryEntry, JsonFormsUISchemaRegistryEntry, ArrayTranslations } from '@jsonforms/core';
import { ErrorObject } from 'ajv';
import { DefineComponent, PropType, Ref, ComputedRef, ComponentOptionsMixin, PublicProps, ExtractPropTypes } from 'vue';
import { IconAliases, Styles } from '..';

declare const controlRenderer: DefineComponent<{
    schema: {
        required: true;
        type: PropType<JsonSchema>;
    };
    uischema: {
        required: true;
        type: PropType<ControlElement>;
    };
    path: {
        required: true;
        type: StringConstructor;
    };
    enabled: {
        required: false;
        type: BooleanConstructor;
        default: undefined;
    };
    renderers: {
        required: boolean;
        type: PropType< JsonFormsRendererRegistryEntry[]>;
        default: undefined;
    };
    cells: {
        required: boolean;
        type: PropType< JsonFormsCellRendererRegistryEntry[]>;
        default: undefined;
    };
    config: {
        required: boolean;
        type: ObjectConstructor;
        default: undefined;
    };
}, {
    currentlyExpanded: Ref<number | null>;
    expansionPanelsProps: ComputedRef<any>;
    suggestToDelete: Ref<number | null>;
    icons: {
        current: ComputedRef<IconAliases>;
    };
    control: ComputedRef<{
        arraySchema: NonNullable< JsonSchema>;
        childErrors: ErrorObject<string, Record<string, any>, unknown>[];
        uischemas: JsonFormsUISchemaRegistryEntry[];
        renderers: JsonFormsRendererRegistryEntry[];
        cells: JsonFormsCellRendererRegistryEntry[];
        label: string;
        description: string;
        required: NonNullable<boolean | undefined>;
        i18nKeyPrefix: string;
        uischema: ControlElement;
        errors: string;
        data: any;
        rootSchema: NonNullable< JsonSchema>;
        id: string;
        config: any;
        schema: NonNullable< JsonSchema>;
        enabled: boolean;
        visible: boolean;
        path: string;
    }> & ComputedRef<{
        label: string;
        required: boolean;
        config: any;
        uischema: UISchemaElement;
        schema: JsonSchema;
        data: any;
        childErrors: ErrorObject<string, Record<string, any>, unknown>[];
        i18nKeyPrefix: string;
    } & {
        childErrors: ErrorObject<string, Record<string, any>, unknown>[];
        translations: ArrayTranslations;
    }>;
    addItem(path: string, value: any): () => void;
    removeItems?(path: string, toDelete: number[]): () => void;
    moveUp?(path: string, toMove: number): () => void;
    moveDown?(path: string, toMove: number): () => void;
    styles: Styles;
    appliedOptions: ComputedRef<any>;
    childLabelForIndex: (index: number | null) => string;
    computedLabel: ComputedRef<string>;
    vuetifyProps: (path: string) => any;
    rawChildErrors: ErrorObject<string, Record<string, any>, unknown>[];
}, unknown, {
    addDisabled(): boolean;
    dataLength(): number;
    foundUISchema(): UISchemaElement;
    hideAvatar(): boolean;
}, {
    composePaths: (path1: string, path2: string) => string;
    createDefaultValue: (schema: JsonSchema, rootSchema: JsonSchema) => any;
    addButtonClick(): void;
    moveUpClick(event: Event, toMove: number): void;
    moveDownClick(event: Event, toMove: number): void;
    removeItemsClick(toDelete: number[] | null): void;
    childErrors(index: number): ErrorObject[];
}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly< ExtractPropTypes<{
    schema: {
        required: true;
        type: PropType<JsonSchema>;
    };
    uischema: {
        required: true;
        type: PropType<ControlElement>;
    };
    path: {
        required: true;
        type: StringConstructor;
    };
    enabled: {
        required: false;
        type: BooleanConstructor;
        default: undefined;
    };
    renderers: {
        required: boolean;
        type: PropType< JsonFormsRendererRegistryEntry[]>;
        default: undefined;
    };
    cells: {
        required: boolean;
        type: PropType< JsonFormsCellRendererRegistryEntry[]>;
        default: undefined;
    };
    config: {
        required: boolean;
        type: ObjectConstructor;
        default: undefined;
    };
}>>, {
    enabled: boolean;
    renderers: JsonFormsRendererRegistryEntry[];
    cells: JsonFormsCellRendererRegistryEntry[];
    config: Record<string, any>;
}, {}>;
export default controlRenderer;
