import { Ref } from 'vue';
import { ComponentSize, ComponentState } from '@vexip-ui/config';
/**
 * 根据路径读取对象中的值 (实现 ?. 的逻辑)
 *
 * @param obj 需要被读取的对象
 * @param path 读取的路径
 * @param strict 是否开启严格模式 (非法路径报错)
 */
export declare function getValueByPath<T = unknown>(obj: Record<string, any>, path: string | string[], strict?: boolean): T | null;
/**
 * 根据路径设置对象中的值
 *
 * @param obj 需要被设置的对象
 * @param path 设置的路径
 * @param value 需要设置的值
 * @param strict 是否开启严格模式 (非法路径报错)
 */
export declare function setValueByPath(obj: Record<string, any>, path: string | string[], value: unknown, strict?: boolean): boolean;
export interface FormFieldStore<V = unknown> {
    isField: boolean;
    idFor: Ref<string | undefined>;
    labelId: Ref<string | undefined>;
    state: Ref<ComponentState>;
    disabled: Ref<boolean>;
    loading: Ref<boolean>;
    size: Ref<ComponentSize>;
    validateField: () => Promise<string[] | null>;
    clearField: (defaultValue?: V) => void;
    resetField: () => boolean;
    getFieldValue: (defaultValue?: V) => V;
    setFieldValue: (value: V, strict?: boolean) => void;
}
/**
 * Create a field store, provide field states and control methods
 *
 * @param onFocus a focus method for focusing when label is clicked
 */
export declare function useFieldStore<V = unknown>(onFocus?: () => void): FormFieldStore<V>;
