import { TYPE } from "../constants";
import type { UseThemerProp } from "../types";
/**
 * **shadeOptions**
 * - colour input from user to generate theme
 * - user's input is validated first, if errors, return error and stop
 * - if no errors, merge with default options
 * - apply options to generate theme
 *
 * **shadeFactorsSets**
 * - if user provides custom shades, validate first
 * - if no errors, merge with default shades
 * - apply shades to generate theme
 *
 * @param InputObject
 * @returns
 */
export default function useThemer(props: UseThemerProp): {
    errors: {};
    shadesSet: null;
    shadeOptions: null;
    shadeFactorsSets: null;
} | {
    shadeOptions: {
        type: TYPE.SHADE_OPTION;
        optionName: string;
        hex: string;
        generateShades: boolean;
        channelParams?: {
            type: TYPE.CHANNEL_PARAMS;
            channel: string;
            useBounds?: boolean | undefined;
            upperboundDivider?: number | undefined;
            lowerboundDivider?: number | undefined;
            upperboundPadding?: number | undefined;
            lowerboundPadding?: number | undefined;
        }[] | undefined;
    }[];
    shadeFactorsSets: {
        type: TYPE.SHADE_FACTORS_SET;
        setName: string;
        shadeFactors: {
            [shadeFactorName: string]: number;
        };
    } | undefined;
    shadesSets: {
        type: TYPE.SHADES_SET;
        setName: string;
        shades: {
            [shadeName: string]: string;
        };
    }[];
    shadesSet: null;
    errors: {};
};
