import type { FolderSettings, Schema, SchemaToValues, StoreType } from "./types/index.js";
type HookSettings = {
    store?: StoreType;
};
type SchemaOrFn<S extends Schema = Schema> = S | (() => S);
type FunctionReturnType<S extends Schema> = [
    SchemaToValues<S>,
    (value: {
        [K in keyof Partial<SchemaToValues<S, true>>]: SchemaToValues<S, true>[K];
    }) => void,
    <T extends keyof SchemaToValues<S, true>>(path: T) => SchemaToValues<S, true>[T]
];
type ReturnType<F extends SchemaOrFn> = F extends SchemaOrFn<infer S> ? F extends Function ? FunctionReturnType<S> : SchemaToValues<S> : never;
type HookReturnType<F extends SchemaOrFn | string, G extends SchemaOrFn> = F extends SchemaOrFn ? ReturnType<F> : ReturnType<G>;
/**
 *
 * @param schemaOrFolderName
 * @param settingsOrDepsOrSchema
 * @param folderSettingsOrDeps
 * @param depsOrUndefined
 */
export declare function useControls<S extends Schema, F extends SchemaOrFn<S> | string, G extends SchemaOrFn<S>>(schemaOrFolderName: F, settingsOrDepsOrSchema?: HookSettings | React.DependencyList | G, depsOrSettingsOrFolderSettings?: React.DependencyList | HookSettings | FolderSettings, depsOrSettings?: React.DependencyList | HookSettings, depsOrUndefined?: React.DependencyList): HookReturnType<F, G>;
export {};
