import { StateInitializer, Selector, Patcher, Reducer, Unsubscribe, StateModifier, StateUpdater, SetState, UpdateState } from './types'; type Refresh = () => void; type Observer = (newState: ST) => void; type Subscriber = { observer: Observer; selector: Selector; refresh?: Refresh; }; export default class State { private value; private subscribers; constructor(initialValue: StateInitializer | T); getValue(selector?: Selector): T | ST; refresh(): void; setValue(newValue: T | StateUpdater): void; setValue(newValue: ST | StateUpdater, config: { selector?: Selector; }): void; setValue(newValue: ST | StateUpdater, config: { selector?: Selector; patcher?: Patcher; }): void; updateValue(stateModifier: StateModifier): void; updateValue(stateModifier: StateModifier, config: { selector?: Selector; }): void; updateValue(stateModifier: StateModifier, config: { selector?: Selector; patcher?: Patcher; }): void; private __updateValue; subscribe(itemToSubscribe: Subscriber | Observer): Unsubscribe; select(selector: Selector): DerivedState; useState(config?: {}): [ state: T, setState: SetState, updateState: UpdateState, stateObject: State ]; useState(config: { selector: Selector; }): [ state: ST, setState: SetState, updateState: UpdateState, stateObject: State ]; useState(config: { selector: Selector; patcher: Patcher; }): [ state: ST, setState: SetState, updateState: UpdateState, stateObject: State ]; useReducer<_T extends T, A>(reducer: Reducer<_T, A>, config?: {}): [ state: _T, dispatch: (action: A) => void, stateObject: State<_T> ]; useReducer(reducer: Reducer, config: { selector: Selector; }): [ state: ST, dispatch: (action: A) => void, stateObject: State ]; useReducer(reducer: Reducer, config: { selector: Selector; patcher: Patcher; }): [ state: ST, dispatch: (action: A) => void, stateObject: State ]; } export declare class DerivedState { State: State; selector: Selector; constructor(State: State, selector: Selector); getValue(): ST; subscribe(observer?: Observer, refresh?: Refresh): Unsubscribe; } export declare function createDerivedState(State: State, selector: Selector): DerivedState; export declare function createState(initialValue: StateInitializer | T): State; export {};