import type { ExtractPropTypes, PropType } from 'vue';
export declare type IOption = {
    label: string;
    value: string | number | boolean;
    key?: string | number;
} & Record<string, any>;
export interface IChoiceOptionProps {
    key: string;
    value: string;
    label: string;
}
export declare type IChoiceOption = IOption[] | string[] | number[] | Record<string, string>[] | any[];
export declare const preProps: {
    name: {
        type: StringConstructor;
        default: string;
    };
    multiple: {
        type: BooleanConstructor;
        default: boolean;
    };
    modelValue: {
        type: PropType<string | number | boolean | string[] | number[] | boolean[]>;
        default: string;
        required: boolean;
    };
    options: {
        type: PropType<IChoiceOption | (() => Promise<IChoiceOption>)>;
        default: () => never[];
    };
    props: {
        type: PropType<Partial<IChoiceOptionProps>>;
        default: () => void;
    };
    expires: {
        type: PropType<number | Date>;
        default: number;
    };
    loadingText: {
        type: StringConstructor;
        default: string;
    };
};
export declare const preEmit: string[];
export interface IContext {
    props: ExtractPropTypes<typeof preProps>;
    emits: (event: 'update:modelValue' | 'init', ...args: any[]) => void;
}
declare const useChoice: ({ props, emits }: IContext, storagPrefix: string) => {
    loading: import("vue").Ref<boolean>;
    myOptions: IOption[];
    myProps: import("vue").ComputedRef<IChoiceOptionProps>;
    myValue: import("vue").WritableComputedRef<any>;
    init: () => Promise<void>;
};
export default useChoice;
