export type Dispatch<A> = (value: A) => void;
export type SetStateAction<S> = S | ((prevState: S) => S);
export type SetState<T> = Dispatch<SetStateAction<T>>;
export declare function rawProvideNestedSetState<OriginalType extends object, Key1 extends keyof OriginalType>(rootUpdater: Dispatch<SetStateAction<OriginalType>>, key1: Key1): Dispatch<SetStateAction<OriginalType[Key1]>>;
export declare function rawProvideNestedSetState<OriginalType extends object, Key1 extends keyof OriginalType, Key2 extends keyof OriginalType[Key1]>(rootUpdater: Dispatch<SetStateAction<OriginalType>>, key1: Key1, key2: Key2): Dispatch<SetStateAction<OriginalType[Key1][Key2]>>;
export declare function rawProvideNestedSetState<OriginalType extends object, Key1 extends keyof OriginalType, Key2 extends keyof OriginalType[Key1], Key3 extends keyof OriginalType[Key1][Key2]>(rootUpdater: Dispatch<SetStateAction<OriginalType>>, key1: Key1, key2: Key2, key3: Key3): Dispatch<SetStateAction<OriginalType[Key1][Key2][Key3]>>;
export declare function rawProvideNestedSetState<OriginalType extends object, Key1 extends keyof OriginalType, Key2 extends keyof OriginalType[Key1], Key3 extends keyof OriginalType[Key1][Key2], Key4 extends keyof OriginalType[Key1][Key2][Key3]>(rootUpdater: Dispatch<SetStateAction<OriginalType>>, key1: Key1, key2: Key2, key3: Key3, key4: Key4): Dispatch<SetStateAction<OriginalType[Key1][Key2][Key3][Key4]>>;
export declare function rawProvideNestedSetState<OriginalType extends object, Key1 extends keyof OriginalType, Key2 extends keyof OriginalType[Key1], Key3 extends keyof OriginalType[Key1][Key2], Key4 extends keyof OriginalType[Key1][Key2][Key3], Key5 extends keyof OriginalType[Key1][Key2][Key3][Key4]>(rootUpdater: Dispatch<SetStateAction<OriginalType>>, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5): Dispatch<SetStateAction<OriginalType[Key1][Key2][Key3][Key4][Key5]>>;
export declare function rawProvideNestedSetState<OriginalType extends object, Key1 extends keyof OriginalType, Key2 extends keyof OriginalType[Key1], Key3 extends keyof OriginalType[Key1][Key2], Key4 extends keyof OriginalType[Key1][Key2][Key3], Key5 extends keyof OriginalType[Key1][Key2][Key3][Key4], Key6 extends keyof OriginalType[Key1][Key2][Key3][Key4][Key5]>(rootUpdater: Dispatch<SetStateAction<OriginalType>>, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6): Dispatch<SetStateAction<OriginalType[Key1][Key2][Key3][Key4][Key5][Key6]>>;
export declare function rawProvideNestedSetState<OriginalType extends object, Key1 extends keyof OriginalType, Key2 extends keyof OriginalType[Key1], Key3 extends keyof OriginalType[Key1][Key2], Key4 extends keyof OriginalType[Key1][Key2][Key3], Key5 extends keyof OriginalType[Key1][Key2][Key3][Key4], Key6 extends keyof OriginalType[Key1][Key2][Key3][Key4][Key5], Key7 extends keyof OriginalType[Key1][Key2][Key3][Key4][Key5][Key6]>(rootUpdater: Dispatch<SetStateAction<OriginalType>>, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7): Dispatch<SetStateAction<OriginalType[Key1][Key2][Key3][Key4][Key5][Key6][Key7]>>;
export declare const provideNestedSetState: typeof rawProvideNestedSetState;
