import { IconAliases } from '../icons/icons';
import { ControlElement, DispatchPropsOfControl, DispatchPropsOfMultiEnumControl, JsonFormsSubStates, JsonSchema, UISchemaElement, CombinatorTranslations, Translator, ArrayTranslations } from '@jsonforms/core';
import { default as Ajv, ErrorObject } from 'ajv';
import { ComputedRef, InjectionKey, Ref } from 'vue';
import { IconOptions } from 'vuetify';
import { Styles } from '../styles';

export declare const IconSymbol: InjectionKey<Required<IconOptions>>;
export declare const useControlAppliedOptions: <T extends {
    config: any;
    uischema: UISchemaElement;
}, I extends {
    control: ComputedRef<T>;
}>(input: I) => ComputedRef<any>;
export declare const useLayoutAppliedOptions: <T extends {
    config: any;
    uischema: UISchemaElement;
}, I extends {
    layout: ComputedRef<T>;
}>(input: I) => ComputedRef<any>;
export declare const useComputedLabel: <T extends {
    label: string;
    required: boolean;
}, I extends {
    control: ComputedRef<T>;
}>(input: I, appliedOptions: ReturnType<typeof useControlAppliedOptions>) => ComputedRef<string>;
/**
 * Adds styles, appliedOptions and vuetifyProps
 */
export declare const useVuetifyLabel: <T extends {
    uischema: UISchemaElement;
    config: any;
}, I extends {
    label: ComputedRef<T>;
}>(input: I) => I & {
    appliedOptions: ComputedRef<any>;
    vuetifyProps: (path: string) => any;
    styles: Styles;
};
/**
 * Adds styles, isFocused, appliedOptions and onChange
 */
export declare const useVuetifyControl: <T extends {
    uischema: ControlElement;
    path: string;
    config: any;
    label: string;
    description: string;
    required: boolean;
    errors: string;
    id: string;
    visible: boolean;
}, I extends {
    control: ComputedRef<T>;
} & (DispatchPropsOfControl | DispatchPropsOfMultiEnumControl)>(input: I, adaptValue?: (target: any) => any, debounceWait?: number) => I & {
    control: ComputedRef<T & {
        errors: string;
    }>;
    styles: Styles;
    isFocused: Ref<boolean>;
    appliedOptions: ComputedRef<any>;
    controlWrapper: ComputedRef<{
        id: string;
        description: string;
        errors: string;
        label: string;
        visible: boolean;
        required: boolean;
    }>;
    onChange: (value: any) => void;
    vuetifyProps: (path: string) => any;
    persistentHint: () => boolean;
    computedLabel: ComputedRef<string>;
    touched: Ref<boolean>;
    handleBlur: () => void;
    handleFocus: () => void;
    rawErrors: ComputedRef<string>;
};
export declare const useCombinatorTranslations: <T extends {
    i18nKeyPrefix: string;
    label: string;
}, I extends {
    control: ComputedRef<T>;
}>(input: I) => I & {
    control: ComputedRef<T & {
        translations: CombinatorTranslations;
    }>;
};
export declare const useJsonForms: () => JsonFormsSubStates;
export declare const useTranslator: () => ComputedRef< Translator>;
/**
 * Adds styles and appliedOptions
 */
export declare const useVuetifyLayout: <T extends {
    config: any;
    uischema: UISchemaElement;
}, I extends {
    layout: ComputedRef<T>;
}>(input: I) => I & {
    styles: Styles;
    appliedOptions: ComputedRef<any>;
    vuetifyProps: (path: string) => any;
};
/**
 * Adds styles, appliedOptions and childUiSchema
 */
export declare const useVuetifyArrayControl: <T extends {
    label: string;
    required: boolean;
    config: any;
    uischema: UISchemaElement;
    schema: JsonSchema;
    data: any;
    childErrors: ErrorObject[];
    i18nKeyPrefix: string;
}, I extends {
    control: ComputedRef<T>;
}>(input: I) => I & {
    control: ComputedRef<T & {
        childErrors: ErrorObject<string, Record<string, any>, unknown>[];
        translations: ArrayTranslations;
    }>;
    styles: Styles;
    appliedOptions: ComputedRef<any>;
    childLabelForIndex: (index: number | null) => string;
    computedLabel: ComputedRef<string>;
    vuetifyProps: (path: string) => any;
    rawChildErrors: ErrorObject<string, Record<string, any>, unknown>[];
};
/**
 * Adds styles and appliedOptions
 */
export declare const useVuetifyBasicControl: <T extends {
    config: any;
    uischema: UISchemaElement;
}, I extends {
    control: ComputedRef<T>;
}>(input: I) => I & {
    styles: Styles;
    appliedOptions: ComputedRef<any>;
    vuetifyProps: (path: string) => any;
};
/**
 * Extracts Ajv from JSON Forms
 */
export declare const useAjv: () => Ajv;
export interface NestedInfo {
    level: number;
    parentElement?: 'array' | 'object';
}
export declare const useNested: (element: false | 'array' | 'object') => NestedInfo;
export declare const useIcons: () => {
    current: ComputedRef<IconAliases>;
};
export declare const determineClearValue: (defaultValue: any) => any;
