import * as React from "react";
declare type Selector<Value> = (value: Value) => any;
declare type SelectorHooks<Selectors> = {
    [K in keyof Selectors]: () => Selectors[K] extends (...args: any) => infer R ? R : never;
};
declare type Hooks<Value, Selectors extends Selector<Value>[]> = Selectors["length"] extends 0 ? [() => Value] : SelectorHooks<Selectors>;
declare type ConstateTuple<Props, Value, Selectors extends Selector<Value>[]> = [
    React.FC<React.PropsWithChildren<Props>>,
    ...Hooks<Value, Selectors>
];
declare function constate<Props, Value, Selectors extends Selector<Value>[]>(useValue: (props: Props) => Value, ...selectors: Selectors): ConstateTuple<Props, Value, Selectors>;
export default constate;
